遞迴演算法時間複雜度遞迴函式fact int nif n1 return 1else return n fact n

2021-04-18 03:13:51 字數 2716 閱讀 6188

1樓:匿名使用者

從入口n單向 到出口n =1,再回來,所以時間複雜度為o(n)

2樓:

t(n)= o(n);s(n)=o(n);

t 時 s空

下面一段程式的時間複雜度的過程: fact(int n) { if(n<=1) return(1); else return(n*fact(n-1)); }

3樓:匿名使用者

對於複函式fib,時間複雜度制 t(n)=1+t(n-1),故為 θ(n)。

對於函bai數cnm,你這裡n>m,呼叫了dufib(n),fib(m),fib(n-m),外加一次除法zhi和一次乘法

dao運算,故其時間複雜度為 o(n)。

階乘的英文是factorial。

4樓:匿名使用者

應該是用遞迴寫的求數的階乘

int f(int n){ if(n==1)return 1; else return (n*f(n-1)); }這個函式有什麼作用?時間複雜度是?

5樓:康春華靳飲

沒什麼本質錯誤

(1)你的n

是引用,你這樣做會改變n本身的值

建議你用

形參f(int

n)(回2)

沒有考慮溢位,n!

一般答值都很大,你做好做一下判斷,否者很容易溢位的比如n多少

反回-1

表示錯誤。

你也可以用long

行加大範圍

需要比較複雜的計算,

一般公司面試題,考n!

一個是看你會不會用遞迴,一個是看你考慮溢位了沒。

int fun(int n) {if(n==1)return 1; else return(n+fun(n-1)); } main() { int x; scanf("%d",x); x=fun(x

6樓:度秒愛人

正確答案: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。

7樓:神龍飛天

第一次進入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.

8樓:澄聞網

簡單的遞迴函式啊,有什麼看不明白的呢。

9樓:匿名使用者

大哥,問問題的時候也負責點好不,要不指望誰給你認真回答。

你到底想問啥?

int f(int n) {if(n) return f(n-1)+n; else return n; }這個遞迴函式,呼叫f(4),它的返回值是多少?

10樓:度秒愛人

正確答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。

11樓:匿名使用者

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 a 再 每遞迴一次就 a 時間複雜度就可以用a的值表示 就是遞迴的次數 1 遞迴 的求解,可以通過同一問題的更簡單的形式的求解來表示.並通過問題的簡單形式的解求出複雜形式的解.遞迴是解決一類問題的重要方法.遞迴程式設計是程式設計中常用的一種方法,它可以解決所有有遞...

演算法的複雜度主要包括演算法的時間複雜度和空間複雜度,演算法的時間複雜度是指

時間複雜度考慮的是演算法的執行時間,因此是d 演算法的空間複雜度指的是什麼?1 簡單來說bai 演算法的空間du 複雜度指的是佔zhi用記憶體 dao,cpu等計算機資源回的程度。答 2 具體點來解釋就是 空間複雜度 space complexity 是對一個演算法在執行過程中臨時佔用儲存空間大小的...

演算法的時間複雜度和空間複雜度怎麼看

時間複雜度,就是計算程式執行的時間,空間複雜度,就是所佔的記憶體空間。同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。電腦科學中,演算法的時間複雜度是一個函式,它定量描述了該演算法的執行時間。這是一個關於代表演算法輸入值...