1. 程式人生 > >演算法設計與分析基礎【第三版】習題1.1 4

演算法設計與分析基礎【第三版】習題1.1 4

演算法設計與分析基礎 習題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(中間點)的正負來替換目標解範圍的左右端點值 經過有限次迴圈即可將範圍限定在給定精確度內。