1樓:匿名使用者
這個函式是用來求階乘的,用了遞迴方法。輸入100,就會得到100的階乘。但是由於數值太大,會導致溢位。建議將返回值型別改為 double 型。
計算n的階乘需要進行n次乘法運算,因此時間複雜度為o(n)。
int f(int n){ if(n==1)return 1; else return (n*f(n-1)); }這個函式有什麼作用?時間複雜度是?
2樓:康春華靳飲
沒什麼本質錯誤
(1)你的n
是引用,你這樣做會改變n本身的值
建議你用
形參f(int
n)(回2)
沒有考慮溢位,n!
一般答值都很大,你做好做一下判斷,否者很容易溢位的比如n多少
反回-1
表示錯誤。
你也可以用long
行加大範圍
需要比較複雜的計算,
一般公司面試題,考n!
乙個是看你會不會用遞迴,乙個是看你考慮溢位了沒。
int f(int n) {if(n) return f(n-1)+n; else return n; }這個遞迴函式,呼叫f(4),它的返回值是多少?
3樓:度秒愛人
正確答bai案:a
本題主要考查函式du的遞迴
zhi呼叫
dao。在做遞迴呼叫函式型別版的題目時,我權們首先要找到函式的出口和遞迴結束的條件。
在本題中,程式首先定義了乙個fun函式,函式的形參是乙個整型變數n,從後面的程式可以看出,該函式是乙個遞迴函式。在函式體中,首先執行條件判斷語句,如果條件結果為真,說明變數n為1,此時返回1,這是遞迴函式的出口;否則返回函式的遞迴呼叫。
在主函式中,定義乙個變數x,並試圖通過鍵盤輸入的方式為變數x賦初值,然後呼叫fun函式,並用x作為其形參,用x儲存最後的執行結果輸出。
變數x的初值為10,從上面的分析我們知道,遞迴呼叫的出口是n=1,而每遞迴一次n的值減1,因此,函式fun遞迴呼叫了9次,其運算相當於10+9+8+7+6+5+4+3+2+1=55。因此,程式最終的輸出結果是55。
4樓:匿名使用者
f(4)=f(3)+4
=f(2)+3+4
=f(1)+2+3+4
=f(0)+1+2+3+4
=0+1+2+3+4=10
int f(int n) { if( n == 1 || n == 2) return 1; else return f(n - 1) + f(n - 2); }
5樓:火之_尤迪安
f(20)
= f(19) - f(18)= f(18)-f(17) - [f(17) - f(16)]= f(18) - 2f(17) + f(16)……中間省略78個字……(反正就是往下展開)還有專你寫錯了額屬
f(20)是f(19)-f(18),不是f(19)-f(20)
下面程式的時間複雜度為 int f(int n) { if(n==0||n==1) return 1; else return n*f(n-1); }
6樓:特魯門
這個演算法實質上是在求n的階乘,也就是說運算過程是:n*(n-1)....2*1 ,中間經過了n次運算,也就是說時間複雜度是o(n)
有以下程式int f(int n){if(n==1)return 1;else return f(n-1)+1;} main() {int i,j=0; for(i=1;i<......
7樓:林卡迪
f(1)=1
f(2)=f(1)+1=2
i=1j+=f(1)=1 j=1
i=2j+=f(1)+1=2 j=3
迴圈結束。
8樓:鐳毅
這是遞迴。
請看一看資料結構與演算法裡面的尾遞迴,就明白了。
int fun(int n) {if(n==1)return 1; else return(n+fun(n-1)); } main() { int x; scanf("%d",x); x=fun(x
9樓:度秒愛人
正確答案:a
本題主要考查函式的遞迴調
用。在做遞迴呼叫函式型別的題目專時,我們首屬先要找到函式的出口和遞迴結束的條件。
在本題中,程式首先定義了乙個fun函式,函式的形參是乙個整型變數n,從後面的程式可以看出,該函式是乙個遞迴函式。在函式體中,首先執行條件判斷語句,如果條件結果為真,說明變數n為1,此時返回1,這是遞迴函式的出口;否則返回函式的遞迴呼叫。
在主函式中,定義乙個變數x,並試圖通過鍵盤輸入的方式為變數x賦初值,然後呼叫fun函式,並用x作為其形參,用x儲存最後的執行結果輸出。
變數x的初值為10,從上面的分析我們知道,遞迴呼叫的出口是n=1,而每遞迴一次n的值減1,因此,函式fun遞迴呼叫了9次,其運算相當於10+9+8+7+6+5+4+3+2+1=55。因此,程式最終的輸出結果是55。
10樓:神龍飛天
第一次進入bai
:x==10,因為x!
du=1,執行else return(n+fun(n-1)); 語句zhi,返回dao10+fun(
10-1)即專10+fun(9)
第二次進入屬:x==9,因為x!=1,執行else return(n+fun(n-1)); 語句,返回10+9+fun(9-1)即10+9+fun(8)
.....
....
第九次進入:x==2,因為x!=1,執行else return(n+fun(n-1)); 語句,返回10+9+8+7+6+5+4+3+2+fun(2-1)即10+9+8+7+6+5+4+3+2+fun(1)
第十次進入:x==1,因為x==1,執行return 1; 語句,返回10+9+8+7+6+5+4+3+2+1。
事實上是求1+...+10的和。
結果應該是55.
11樓:澄聞網
簡單的遞迴函式啊,有什麼看不明白的呢。
12樓:匿名使用者
大哥,問問題的時候也負責點好不,要不指望誰給你認真回答。
你到底想問啥?
int f(int a[],int n) { if(n%2==0){ if(n>=1) return f(a,n-1)-a[n-1]; else return 0;} else { if(n>=1)
13樓:匿名使用者
結果bai是:3;
該程式的意du
思是,該陣列的
zhi奇數減去偶dao
數再求和;
#include
int f(int a,int n)
else
}main()
,s;s=f(aa,5); //呼叫子函式;
printf("%d\n",s);}
16、下面程式的執行結果是: int f( int a[], int n) { if(n>
14樓:匿名使用者
乙個寫得不怎麼好的累加的程式。是乙個遞迴的。靠n控制遞迴次數。最後輸出應該是6.
15樓:匿名使用者
corn,mac blush, cooked carrots (but can be eaten raw), the pumpkin and canned peas.
watermelon, ripe banana,mulberry bags, dates, raisins,mulberry sale, grapes and canned fruit - all fruit with fructose and more.
16樓:匿名使用者
foxpro ? c語言?
vb1 b2 有什麼具體作用
維生素b1是維生素中發現最早的一種。由嘧啶環和噻唑環結合而成的一種b族維生素。為無色結晶體,溶於水,在酸性溶液中很穩定,在鹼性溶液中不穩定,易被氧化和受熱破壞。維生素b1主要存在於種子的外皮和胚芽中,如公尺糠和麩皮中含量很豐富,在酵母菌中含量也極豐富。瘦肉 白菜和芹菜中含量也較豐富。目前所用的維生素...
fx和fx1是奇函式有什麼區別
y f x 和 y f x 1 是兩個抄函式,後乙個bai是由前乙個向左平移du乙個單位形成的.自變數與對應法則均不zhi同.由f x 解析式求f x 1 解析式可採dao用代入法.f x f x 1 說明函式在定義域內有週期性,最小正週期為1.我們可以把y f x 1 看成是由內層函式t x 1,...
1,甲骨文對研究商朝的歷史有什麼作用
甲骨文儲存了了很多商朝時期的史料,反映了當時的政治 經濟 文化等多方面的資訊。甲骨文對研究商朝的歷史有什麼作用 商 甲骨文,是商代 西元前1400 的文字。這些文字因為刻在獸骨或龜甲上,故名甲骨文。文字是以契刀刻劃的,故又名 契文 契刻 文字的內容,除極少數屬於記事外,大部分是屬於當時王公問卜的記載...