Linux C語言結構體2-遞迴與地推
阿新 • • 發佈:2019-02-08
遞迴原理
函式呼叫
int functionB(int a,int b){
return (a+b);
}
int functionA(){
...
functionB(10,10);
...
return 0;
}
遞迴函式
int func(int n){
int r;
if(n<0)
printf("data error\n");
else if(n==0 || n==1)
r=1;
else
r=n*func(n-1);
return r;
}
資料儲存在棧裡面
r=n*function(n-1)函式被獨立的分配了記憶體單元,function(n-1)已經不是原來的function(n)了,就像我們重新寫了幾行程式碼一樣。
遞迴函式裡會給一些限定條件,。要不然函式會一直呼叫自身,會死迴圈。
所謂遞迴就是講一個問題為n的問題轉化為問題為n-1的問題。
遞推:是構造一個低階的規模
eg:
遞推思想,從低規模開始:求n的階乘,通過規模為1的推匯出規模為i+1的,以此類推得出規模為n的問題。
//總結下來就是:遞迴:n從高到低;遞推:n從低到高!
int func(int n)
{
int r=1,j;
for(i=1;i<=n;i++){
r=r*i;
}
return (r);
}