1. 程式人生 > >Linux C語言結構體2-遞迴與地推

Linux C語言結構體2-遞迴與地推

遞迴原理

函式呼叫
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);
	}