面試題遞迴演算法,遞迴演算法選擇題

2023-03-08 08:20:01 字數 999 閱讀 7923

1樓:網友

我來這麼解釋把 當你啟用了程式foo(30) 。那麼根據程式 i=30;即不<=0 也不<=2,那麼他就走 foo(i -1) +foo(i - 2);

那i-1 跟 i-2 是什麼東西的呢,那就是f(29)+f(28);

同理f(29) 怎麼拆呢?。。依次照f(30)的方式下去。當遇到f(2)的時候,程式判斷 返回乙個1,那麼最後由n多的1組織一步步返回,最後得到f(30)

2樓:五千個位元組

關於遞迴演算法。

c語言裡對機理解釋的很詳細。

我很久沒摸過c了。

模糊的記得機理好像是:

遞迴,當函式體內譬如f1呼叫函式f2時,函式體內會分配乙個臨時變數給f2,假如f2還得呼叫f3,那麼f2的作用域內還得給f3分配變數,就象堆疊一樣,然後從內到外依次執行呼叫,當然變數也不停的解析,直到最終返回結果,遞迴只不過呼叫的是自身函式體而已,深度遞迴執行的時候,要不停的在函式體內分配變數,然後從最內層開始執行,一層層解析掉,直到最後最外層返回結果。

而你今天問的問題,是函式內要分配兩個變數而已,就像樹一樣,不停的向下分配,然後從最底層開始執行,你之所以不理解,是對函式呼叫的機理不理解。

遞迴的優點是可以簡化演算法,不要以為遞迴就很好,它是很佔用資源的。

3樓:

程式foo(30) 。那麼根據程式 i=30;即不<=0 也不<=2,那麼他就走 foo(i -1) +foo(i - 2);

那i-1 跟 i-2 是什麼東西的呢,那就是f(29)+f(28);

同理f(29) 怎麼拆呢?。。依次照f(30)的方式下去。當遇到f(2)的時候,程式判斷 返回乙個1,那麼最後由n多的1組織一步步返回,最後得到f(30)

遞迴演算法選擇題

4樓:匿名使用者

個人看法:選擇d(遞迴的定義是乙個物件部分地包含它自己,或用它自己給自己定義,則這個物件是遞迴的。f(n)=g(f(n-1))。

遞迴演算法和非遞迴演算法在分析時間複雜度和空間複雜度上為什麼不同

在演算法分析中,當乙個演算法中包含遞迴呼叫時,其時間複雜度的分析會轉化為乙個遞迴方程求解。實際上,這個問題是數學上求解漸近階的問題,而遞迴方程的形式多種多樣,其求解方法也是不一而足,比較常用的有以下四種方法 1 代入法 substitution method 代入法的基本步驟是先推測遞迴方程的顯式解...

PASCAL遞迴演算法的非遞迴實現問題高分

手寫乙個stack,然後每當需要recursive call的時候push stack,stack非空的時候pop並處理.相當於模擬乙個call stack.即 procedure make1 non rec tx,ty integer vari,x,y integer begin stack.cl...

用遞迴演算法解決下面的問題(C C )

拷乙個我編的自己用的給你。int fullorder int n int i,j,k,n for i n 1 i n i int re malloc sizeof int n n if n 1 elsere i n n j n k n i free re1 return re 結果在返回的指標裡。在...