int fact(int n)
{int f;
if(n==0||n==1)
f=1;
esle
f=n*fact(n-1);
return f;
}
void main()
{
int n,f;
cin>>n;
f=fact(n);
cout<<f;
}
畫出n=4的遞回程序圖
uj5u.com熱心網友回復:
流程圖我現在畫不了,要驗證,我拿不到手機,先給你說下吧,看看能不能說清Fact(4):
n==0||n==1
else(f=4*fact(3))
return f;//此時上面進去else呼叫fact函式沒有結束,所以return 先不執行
fact(3) //同理
else(f=3*fact(2))
return f
fact(2) 同理
else(f=2*fact(1))
return f;
fact(1)
//此時滿足if條件
f賦值為1
return f (n=1)de
回傳的是函式呼叫的位置
即
else(f=2*fact(1)),此時fact(1)已經結束并回傳1,式子就是else(f=2*1);//(1是fact1的結果)
else陳述句執行結束
執行fact(2)的return陳述句;fact(2)執行結束,回傳呼叫位置
即else(f=3*fact(2))這里,fact(2)執行結果已經回傳,代入
繼而else執行結束,執行return
后面同理
總的就是在當前函式else陳述句中呼叫,相當于就會在當前函式else陳述句卡住,先去執行呼叫的函式,直到呼叫的函式回傳結果,接收結果執行完當前函式else陳述句,程式才會在當前函式中執行下一句。
uj5u.com熱心網友回復:
謝謝啦,我去試試看
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86028.html
標籤:C++ 語言
上一篇:C++類與靜態成員
