[img=https://img-bbs.csdn.net/upload/202008/24/1598275673_776723.png][/img
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
都給你公式了,套著公式遞回就可以了double fx(double x, double a) {
double x1;
if (x==0) return 0; //理論上不存在,為了排除例外(除0)情況
x1 = (x + a/x)/2; //公式
if (abs(x1-x) < 0.00001) return x1; //達到題目要求的精度就回傳
return fx(x1, a); //否則繼續遞回(把x1代入公式繼續求xn)
}
int main(void)
{
double a;
scanf("%lf", &a);
double x = fx(1, a); //x0=1
printf("%.0lf\n", x); //題目要求取整數部分
return 0;
}
uj5u.com熱心網友回復:
“給定一個小點的輸入,完整單步跟蹤(同時按Alt+7鍵查看Call Stack里面從上到下列出的對應從里層到外層的函式呼叫歷史)一遍。”是理解遞回函式作業原理的不二法門!遞回函式關注以下幾個因素
·退出條件
·引數有哪些
·回傳值是什么
·區域變數有哪些
·全域變數有哪些
·何時輸出
·會不會導致堆疊溢位
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/12604.html
標籤:C語言
