我有這樣的代碼:Ç遞歸函數
#include <stdio.h>
#include <stdlib.h>
int func(int n0, int n);
int main()
{
int n0, n, nFinal=0;
printf ("Enter constant (n0): ");
scanf ("%d", &n0);
printf ("Enter the number of iteractions (n): ");
scanf ("%d", &n);
nFinal = func(n0, n);
printf ("nFinal after %d iteractions is %d: \n", n, nFinal);
return 0;
}
int func(int n0, int n){
int i,nFinal=0;
for (i = 0; i < n; i++){
nFinal = (nFinal*nFinal) + n0;
}
return nFinal;
}
的nFinal被內計算環路。我想達到相同的結果,但做一個遞歸函數。
從我看到的,我不能改變函數調用,因爲我總是需要開始數和迭代次數。因此,在第一次迭代之後,程序將不得不再次調用nFinal = func (n0, n);
,但正如我在nFinal的計算值的每次迭代中所需要的那樣,我將不得不改變這一點。
是否可以做一個遞歸函數,但保持nFinal = func (n0, n);
的功能?
有人能指點我嗎?
在函數'func'的主體中,您已經在初始化之前使用了'nFinal'。它是否正確? – Chris 2012-04-15 10:12:34
@克里斯對不起。 nFinal初始化爲零 – Favolas 2012-04-15 10:17:40