2016-04-11 76 views
0

請,如果有人幫我在這裏,我會非常gratefull!析因 - 「工作結構」

下面是簡單的代碼爲階乘:

using System; 
namespace CalculatorApplication 
{ 
    class NumberManipulator 
    { 
     public int factorial(int num) 
     { 
     /* local variable declaration */ 
    int result; 
    if (num == 1) 
    { 
     return 1; 
    } 
    else 
    { 
     result = factorial(num - 1) * num; 
     return result; 
    } 
    } 

    static void Main(string[] args) 
    { 
    NumberManipulator n = new NumberManipulator(); 
    //calling the factorial method 
    Console.WriteLine("Factorial of 6 is : {0}", n.factorial(5)); 

    Console.ReadLine(); 
    } 
} 
} 

OK,我quuestion是我們如何實現從5得到正確的階乘(FE,我們得到5 * 4 * 3 * 2 * 1 爲什麼不。 「T我們獲得5×4 = 20或:

5 * 4 * 4 * 3 * 3 * 2 * 2 * 1 * 1 * 1藿我們 「錯過」 在這裏對4 * 3 - 處理器如何知道錯誤的對 - 換句話說,不久之後,我們必須乘以多少處理器REMEMBERS數字(5,4,3,2) ,1)沒有一種迴路

P.我可以清楚地知道發生了什麼,如果它是一種noraml LOOP,但我不明白它「重寫」爲遞歸...請,如果有人能夠一步一步地清楚處理器頭部正在發生什麼......許多感謝!!! - 我不確定這是一個簡單的問題!

回答

0

第一:這將在public int factorial(int num)方法上出現錯誤,您將收到一個局部變量錯誤。

第二:由於用戶輸入是動態的,因此無法使用循環就無法實現階乘。如果你想做遞歸,你仍然會使用循環遍歷遞歸。

因此處理器讀取從頂部至底部的代碼,從左至右除了一些編程語言例如是C#,這將啓動從Main()方法(與所述資本中號)讀取。所以如果你創建一個方法public string main(),這不會給你錯誤,但它仍然會從Main()開始讀取。

+0

謝謝,我回到這個話題,仍然沒有100%清楚... –