演算法設計與分析基礎【第三版】習題1.1 4
阿新 • • 發佈:2018-12-20
演算法設計與分析基礎 習題1.1 4
設計一個[√n]的演算法,n是任意正整數。除了賦值和比較運算,該演算法只能用到基本的四則運算。
程式碼實現:
#include "iostream"
using namespace std;
double n;
double x;
int main(){
cin>>n;
double head=0,tail=n;
x=n/2;
if(x*x-n>=0)tail=x;
else if(x*x-n<=0)head=x;
while(tail-head>0.000001 )
{
x=head+(tail-head)/2;
if(x*x-n>=0)tail=x;
else if(x*x-n<=0)head=x;
}
cout<<x<<endl;
}
前設·題目並沒有限定精確度,這裡預設0.000001。
設計思路:二分法
具體演算法實現:可以確定的是n必然可以作為 目標解範圍的右端點,另外一端標記為0.接著根據二分法的思想一步步把目標解的範圍縮小 利用f(中間點)的正負來替換目標解範圍的左右端點值 經過有限次迴圈即可將範圍限定在給定精確度內。