私の平方根プログラムは何らかの理由で、ほとんどの入力に対して何を得るべきであるかというだけの答えです。なぜこのことが分かりませんか?特定の入力だけが間違っています。私はまた、答えが与えられた後、非常に最後にセグメンテーションフォルトを取得し、それがどちらかであるかどうかわからない。あなたがreturn文C++平方根と再帰
double newton(double num, double a)
{
if ((abs(a*a - num) <= FLT_EPSILON))
{
return a;
}
else
{
newton(num, (a+num/a)/2);
^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
}
を配置するのを忘れたので
#include<iostream>
#include<cmath>
#include<cfloat>
#include<string>
#include <cstdlib>
using namespace std;
//declare sqroot function calls recursive function newton
double sqroot1(double num);
double newton(double num, double guess);
int main(int argc, char **argv)
{
for(int i = 0 ; i < argc ; i++)
{
cout<<"sqroot("<<argv[i+1]<<") is "<< sqroot1(atoi(argv[i+1])) <<endl;
}
}
double newton(double num, double a)
{
if ((abs(a*a - num) <= FLT_EPSILON))
{
return a;
}
else
{
newton(num, (a+num/a)/2);
}
}
double sqroot1(double num)
{
double sqrt = newton(num,num/2);
return sqrt;
}
すべての警告を有効にして、コンパイラから通知された内容を確認します。そして、[なぜ "namespace stdを使うのは悪い習慣"と考えられますか?](http://stackoverflow.com/q/1452721/995714) –
不正な平方根を与えるいくつかの値は何ですか? – 1201ProgramAlarm