1樓:y湯驢
//遞迴,其實就是自己呼叫,知道完成就不呼叫自己!假如n=5; //int 結果 //f(5)=f(4)+5 //f(4)=f(3)+4 //f(3)=f(2)+3 //f(2)=f(1)+2 //f(1)=f(0)+1 //f(0)=0 這樣看 就很容易看出結果來了 假如 我們把帶有函式的換成字母那回更直觀,就是我們的中學數學了 f(5)=x4+5; x4=x3+4; x3=x2+3; x2=x1+2; x1=x0+1; x0=0; 這樣我覺得大家口算就能算出來 f(5)是多少! 其實遞推就是自己呼叫自己,只是每次呼叫引數都在更改,當引數與設定的值符合時,才不再呼叫自己!
有點巢狀的感覺! return 0 就是你所謂的出口,它返回的是一個值,而不是一函式! 注意:
理解的時候 在這裡不把程式理解成一步到位的概念 !
2樓:甘聞海
遞迴相當於數學裡面的遞迴式,你的函式好像寫錯了,+號應該是×號!這不是求階乘的,而是求和的 求階乘應該是下面的 int f(int n) 解釋如下: if (n < 1) return 1; 相當於 f(1)=f(0)=1; int i = f(n - 1)*n; 相當於f(n)=f(n-1)*n 你用數學的方法,倒推過去剛好是f(n)=n*(n-1)*....**1
沒分了呃,跪求關於C語言的遞迴呼叫問題,遞迴呼叫是怎麼過程啊
這個問題我以前也糾結了很長時間,不過最後還是被我想通了。如果你輸入3 即fun 3 則最後輸出的應該先是1然後輸出3.首先有一點你要想通,printf d x 這行 無論變到哪個數字時,他都會執行一遍。然後就是先後順序的問題。以7為例 7 2 結果是3,3 0 然後執行 fun x 2 這個時候回到...
C語言函式的遞迴呼叫
先呼叫函式f,然後把返回值賦值給z。不過這個函式不對,沒有退出條件,無法停止。舉例說明吧 int f int x else 假如f 3 那麼第一次f 3 x!0,呼叫f 2 第二次f 2 x!0,呼叫f 1 第三次f 1 x!0,呼叫f 0 第四次f 1 x 0,返回1 返回第三次呼叫f 1 返回1...
c語言用遞迴求最大公約數,C語言用遞迴求最大公約數
用遞迴求最bai大公約數 我給du你簡化並改zhi 了一下可以用了 include int int m,int n int main int int m,int n c語言,用遞迴函式求最大公約數 說明 bai本例du是用zhi輾轉相除 dao法的遞專歸屬法 int mondivisor int a...