sqrt関数を使わずに平方根を求めるアルゴリズムを探していて、プログラミングに入れてみました。私はC++でこの作業コードに行き着きます
#include <iostream>
using namespace std;
double SqrtNumber(double num)
{
double lower_bound=0;
double upper_bound=num;
double temp=0; /* ek edited this line */
int nCount = 50;
while(nCount != 0)
{
temp=(lower_bound+upper_bound)/2;
if(temp*temp==num)
{
return temp;
}
else if(temp*temp > num)
{
upper_bound = temp;
}
else
{
lower_bound = temp;
}
nCount--;
}
return temp;
}
int main()
{
double num;
cout<<"Enter the number\n";
cin>>num;
if(num < 0)
{
cout<<"Error: Negative number!";
return 0;
}
cout<<"Square roots are: +"<<sqrtnum(num) and <<" and -"<<sqrtnum(num);
return 0;
}
ここで問題は、宣言の反復回数 nCount を初期化することです (ここでは 50 です)。たとえば、36 の平方根を見つけるには 22 回の反復が必要なので問題ありませんが、15625 の平方根を見つけるには 50 回以上の反復が必要です。したがって、50 回の反復後に temp の値が返されます。これに対する解決策を教えてください。