2014-03-03 32 views
-1

所以我有幾個關於遞歸的問題。我在一個班,我正在審查我的筆記和文字,並有點困惑:關於遞歸問題

1)我得到這個正確嗎?迭代器和遞歸看起來非常相似。

遞歸=一個引用自身的函數,它有一個基本情況來解決問題。

迭代器:使用++或 - 來遍歷所有數據以獲取一條信息。

2)什麼是遞歸下降?它是否接近基本情況?那麼什麼是遞歸上升?

3)我們給出遞歸的這個樣本,它是困惑我:

Product of Positive Integer from 1 to n 
Denoted by n! => n! = 1.2.3....(n-2).(n-1).n 
0! = 1 , 5! = 1.2.3.4.5 = 120, 6! = 5! . 6 = 720 
n! = n . (n – 1)! 
Definition 
– If n = 0 then n! = 1 
– If n > 0, then n! = n. (n-1) ! 

爲什麼會出現後一個感嘆號(N-1)?這些點是什麼,如n。(n-1)?

+1

點代表乘法 –

回答

1

遞歸和迭代是不一樣的。你可以迭代而不遞歸,遞歸意味着沒有迭代。

讓我們暫時離開遞歸下降。這與parsers有關。

該示例是採取階乘的數學運算。感嘆號的意思是「階乘」。點意味着乘法。

還記得嗎?

0! = 1 
1! = 1 
2! = 2*1 
3! = 3*2*1 = 3*2! 
4! = 4*3*2*1 = 4*3! 

等等。

這說明遞歸本科生看到它的第一次的一個經典問題:

function factorial_recursion(n) { 
    if (n <= 1) { 
     return 1; 
    } else { 
     return n*factorial(n-1); 
    } 
} 

你可以寫同樣的事情,沒有性遞歸迭代:

function factorial_iter(n) { 
    var value = 1; 
    if (n > 1) { 
     for (i = 1; i <= n; ++i) { 
      value *= i; 
     } 
    } 
    return value; 
} 
0

好點的乘法。使用點是令人困惑的,但我們知道5! = 1*2*3*4*5,所以點必須是乘法。此外,!是表示階乘的符號。 5! = 5 * 4!

0
  1. 是,迭代和遞推在某種程度上相似,並且它是known,任何遞歸溶液具有等效迭代解,反之亦然。然而,在其中一種方法中解決許多問題要簡單得多,而不是在另一種方法中解決。兩種方法都可以很容易解決這個因子例子。 每當你看到一個問題如何能夠減少到一個或多個相同的問題在較小的幅度,你可以輕鬆地繼續遞歸解決方案。

  2. 我想遞歸下降是深入到遞歸的深層次,而上升是相反的:從呼叫返回並接近頂層呼叫。

  3. 點代表乘法。