2016-04-11 13 views
0

もし誰かが私を助けてくれたら、私は非常に感謝しています!ここで 階乗 - 「働く構造」

は階乗のための簡単なコードです:私のquuestionは、我々は我々が得る5から(FEを右階乗を取得するために達成しない方法で、

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 5 * 4 * 3 * 2 * 1 なぜドン。 「tは、私たちは5 * 4 = 20以上を取得:

5 * 4 * 4 * 3 * 3 * 2 * 2 * 1 * 1 * 1 HWOたちは "ミス" んここで対4 * 3 - どのようにプロセッサーは、そのペアが間違っているかを知っていますか?言い換えれば、まもなく、どのようにそしてどこのプロセッサーが私たちに乗算しなければならない数(5,4,3,2 、1)ループのないもの

p.s.私は明らかに何が起きているのかを理解することができました。ノーマルループのようなものでしたが、再帰として「書き直された」とは理解できません...もし誰かがプロセッサの頭で何が起こっているのかを明らかにするには、何百もの感謝!!! - 私はそれが簡単な質問であるかどうかはわかりません!!!

答えて

0

まず、public int factorial(int num)メソッドでエラーが発生します。ローカル変数エラーが発生します。

第2:ユーザー入力が動的なので、ループを使用せずに階乗を達成することはできません。再帰を行う場合は、ループを使用して再帰を繰り返します。

従ってプロセッサは上から下にコードを読み取るには、いくつかのプログラミング言語の例を除いて、左から右へのC#であり、それは(資本M有する)Main()方法からの読み取りを開始します。したがって、メソッドpublic string main()を作成してもエラーは発生しませんが、それでもMain()からの読み取りが開始されます。

+0

ありがとうございます、私はこのトピックに戻って、100%クリアではありません... –

関連する問題