程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-遞歸問題,求各位大神解疑

c++-遞歸問題,求各位大神解疑

編輯:編程綜合問答
遞歸問題,求各位大神解疑

遞歸問題,求各位大神解答

這個遞歸哪裡出問題了,為什麼程序沒有結果?



//根據 P/4=1-1/3+1/5-1/7.... 求P的近似值,要求精度為0.000001

#include"iostream"
using namespace std;

int Temp(int n){//求-1的n次方
    if(n==0)return 1;
    return -1*Temp(n-1);
}

double PI(){
    double sum=0;
    double temp=1.0;
    int count=0;//計數變量
    while(temp>=1e-6){
        count++;
        sum=sum+Temp(count-1)*temp;
        temp=1.0/(2*count+1);
    }
    return 4*sum;
}

int main(){
    cout<<"------------求PI的值-------------"<<endl<<endl<<endl<<endl;
    cout<<"根據 P/4=1-1/3+1/5-1/7.... 求P的近似值,要求精度為0.000001"<<endl<<endl;
    double Pi=PI();
    cout<<"PI="<<Pi;
    return 0;
}

最佳回答:


遞歸次數太多了,導致堆棧溢出。
while(temp>=1e-3) 就可以輸出正常結果
while(temp>=1e-4)就不行了
我測試了一下大概while (temp >= 0.000104375)在我電腦上就到達極限了,要遞歸4790次。
建議求PI不要用遞歸

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved