1. 程式人生 > >OJ刷題之迭代法求平方根

OJ刷題之迭代法求平方根

問題及程式碼:

/* 
 * Copyright (c) 2014, 煙臺大學計算機與控制工程學院 
 * All rights reserved. 
 * 檔名稱:test.cpp 
 * 作    者:郝俊宇  
 * 完成日期:2015年 1 月8 日 
 * 版 本 號:v1.0 
 * 
 * 問題描述:用迭代法求 。求平方根的迭代公式為: X[n+1]=1/2(X[n]+a/X[n]) 要求前後兩次求出的得差的絕對值少於0.00001。輸出保留3位小數。
 * 輸入描述:x
 * 程式輸出:x的平方根
 */ 
#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

int main()
{
    float x0,x1;
    int a;
    cin>>a;
    x0=a/2;
    x1=(x0+a/x0)/2;
    while(fabs(x0-x1)>=1e-5)
    {
        x0=x1;
        x1=(x0+a/x0)/2;
    }
    cout<<setiosflags(ios::fixed)<<setprecision(3)<<x1<<endl;
    return 0;
}


執行結果: