int f int nif n 1 return 1 else return n f n 1這個函式有什麼作用?時間複雜度是

2021-03-27 07:33:13 字數 4078 閱讀 9952

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 的文字。這些文字因為刻在獸骨或龜甲上,故名甲骨文。文字是以契刀刻劃的,故又名 契文 契刻 文字的內容,除極少數屬於記事外,大部分是屬於當時王公問卜的記載...