有以下程序 #include void fun(int n, int *p) { int f1,t2; if(n==1 |
有以下程序 #include <stdio.h> void fun(int n, int *p) { int f1,t2; if(n==1 ||n==2) *p=1; else { fun(n-1,&f1); fun(n-2,&f2); *p=f1+f2; } } main() { int s; fun(3,&s); printf("%d\n", s ); }
A.2
B.3
C.4
D.5
正確答案:A解析:在調(diào)用一個(gè)函數(shù)的過(guò)程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱(chēng)為函數(shù)的遞歸調(diào)用。本題中的fun()函數(shù)直接調(diào)用了自身,所以它是一個(gè)遞歸函數(shù)。fun()函數(shù)中,當(dāng)形參n為1或2時(shí),讓形參p所指內(nèi)容為1。從這里可以看出形參p的用途是輸出一個(gè)整數(shù),所以我們不妨記作fun(1)=1、 fun(2)=1。如果是其他情況,那么輸出結(jié)果*p的內(nèi)容為f(n)=f(n-1)+f(n-2)。由此可見(jiàn), fun()函數(shù)的作用是求斐波納契數(shù)列第n項(xiàng)的值(斐波納契數(shù)列第1和2項(xiàng)的值為1,以后各項(xiàng)分別為前兩項(xiàng)之和:1、1、2、3
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。