23 迭代和遞迴

2021-10-03 16:17:58 字數 859 閱讀 2579

1.遞迴和迭代術語的定義是什麼?乙個函式可以同時採用這兩種方法嗎?

答: 遞迴的定義:將乙個大問題分解成比較小的、有著相同形式的問題。

迭代跟遞迴策略是相反的。它使用迴圈(一般情況下,使用for和while語句)的實現被稱為迭代的。他們能夠通過截然不同的方式來解決乙個問題。然而,這些策略並不互相排斥。

2.遞迴和逐步求精法的根本區別是什麼?

答:「相同形式」是這個定義中的關鍵,否則就成了—逐步求精策略,兩種策略都涉及到分解。遞迴的特殊之處就在於子問題有著和初始問題相同的形式。

3、比如,迭代的乙個經典例子是斐波那契數列,這個數列是這樣定義的:

f(n-1) + f(n-2)    (n>2)

f(n)=;

scanf("%d", &n);         // 輸入要計算的n

for(int a=2; a<=n; ++a)  // a控制迴圈次數

f[a] = f[a-1] + f[a-2];

printf("%d\n", f[n]);    // f[n]就是結果

return 0;

而遞迴最典型的例子要是求階乘了。我們在這裡舉另乙個例子,反轉字母:

#include

void f()

int c = getchar();     

if(c!='\n')    f();      

putchar(c);       

intmain(void)

f();  

return 0;

當然了,斐波那契數列也可以寫成如下遞迴:

int f(n)

if(n<=2)return 1;

return fib(n-1) + fib(n-2);

23 迭代和遞迴

1 遞迴和迭代術語的定義是什麼?乙個函式可以同時採用這兩種方法嗎?答 遞迴的定義 將乙個大問題分解成比較小的 有著相同形式的問題。迭代跟遞迴策略是相反的。它使用迴圈 一般情況下,使用for和while語句 的實現被稱為迭代的。他們能夠通過截然不同的方式來解決乙個問題。然而,這些策略並不互相排斥。2 ...

遞迴和迭代 迭代與遞迴

很多程式設計小白都會遇到 迭代 和 遞迴 的問題 包括我自己 大部分同學還是不知道迭代與遞迴的區別。下面我就嘗試用最通俗易懂的模式講解遞迴與迭代的區別。1.迭代 迭代其實很簡單,我們在程式設計中經常用到迭代。比如說 i 1 print i 這個就是乙個迭代,沒想到吧。迭代的意思其實就是在迴圈 現了參...

遞迴和迭代

遞迴和迭代是兩種常用的演算法,很多人知道怎麼寫遞迴和迭代,但是不知道什麼時候該用遞迴,什麼時候該用迭代。下面的 分別通過使用遞迴和迭代計算fibonacci數列,可以很清楚的看到效率的驚人差別。當然,很難有個準則說什麼時候該用遞迴,什麼時候該用迭代,但有乙個很簡單的判斷方法 如果你的遞迴呼叫是在函式...