有以下程序 #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)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。本題中的fun()函數(shù)直接調(diào)用了自身,所以它是一個遞歸函數(shù)。fun()函數(shù)中,當形參n為1或2時,讓形參p所指內(nèi)容為1。從這里可以看出形參p的用途是輸出一個整數(shù),所以我們不妨記作fun(1)=1、 fun(2)=1。如果是其他情況,那么輸出結果*p的內(nèi)容為f(n)=f(n-1)+f(n-2)。由此可見, fun()函數(shù)的作用是求斐波納契數(shù)列第n項的值(斐波納契數(shù)列第1和2項的值為1,以后各項分別為前兩項之和:1、1、2、3
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學等領域),建議您咨詢相關領域專業(yè)人士。