2016-11-18 11 views
-4
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(6)); 
     Console.WriteLine("Factorial of 7 is : {0}", n.factorial(7)); 
     Console.WriteLine("Factorial of 8 is : {0}", n.factorial(8)); 
     Console.ReadLine(); 
     } 
    } 
} 

はので、私はそれは関数が再帰さに関係している知っている与えられた数値の階乗を計算することができるが、どのようにコードが整数を乗じ維持する際に知っておくことが可能であるかを理解していません階乗を見つけるために6未満である。また、どのようにコードが6に達すると乗算を止めるかを知ることができます。これがループ内にあった場合、どのようにこれが可能であるかを完全に理解することができましたが、ループなしではわかりません。私はこのコードが

私はまだC#を学んでいるチュートリアルですが、できるだけシンプルにしてください。

ご協力いただければ幸いです。

+2

コードのデバッグ方法を学びます。ブレークポイントを設定し、行ごとにステップバイステップで動作するようにします。 –

+0

その 'if'文を見てください。 'num = 1'に達すると、1を返します。6に達しません。6から1になります。 –

+2

あなたは間違った方向に考えています。このメソッドは、ベース条件を6から1に乗算します。私は '階乗(num - 1)'のマイナスがそれの良いヒントだと思うべきです。 – Zong

答えて

3

factorial(6)をステップアップしましょう。

factorial(6)とはなんですか? factorial(5) * 6

factorial(5)とはなんですか? factorial(4) * 5

factorial(4)とはなんですか? factorial(3) * 4

factorial(3)とはなんですか? factorial(2) * 3

factorial(2)とはfactorial(1) * 2

factorial(1)とはなんですか? 1

その後、そこから後方に行くと、あなたはあなたの答えに到着します:= 1 * 2 * 3 * 4 * 5 * 6

factorial(6)

関連する問題