第一題:
費氏數列為 1,1,2,3,5,…,定義數列之第 n 項為第 n-1 項與第 n-2 項之和且第 0 項與第 1 項均為 1,即 f1=f0=1,fn=fn-2+fn-1。請先以 C 語言運用遞迴呼叫技巧寫一程式,輸入 n 值後,可以輸出費氏數列的第 n 項值; 接著再以 C 語言重寫另一程式但不可運用遞迴呼叫技巧,同樣輸入 n 值後,可以輸出費氏數列的第 n 項值。 【20 分】
詳解 (共 1 筆)
詳解
int RE(int);
int NRE(int);
void main(void) {
printf("輸入第n項:");
scanf(" %d",&n);
printf("第%d項為(遞迴):%d\n",n,RE(n));
printf("第%d項為(不使用遞迴):%d\n",n,NRE(n));
}
//遞迴
int RE(int n){
if(n==0||n==1){
return 1;
}else{
return RE(n-2)+RE(n-1);
}
}
//不用遞迴
int NRE(int n){
if(n==0||n==1){
return 1;
}else{
int x=1,y=1,i,sum;
for(i=2;i<=n;i++){
sum=x+y;
x=y;
y=sum;
}
return sum;
}
}