C# 我只是不明白这段代码是如何计算给定数字的阶乘的

C# 我只是不明白这段代码是如何计算给定数字的阶乘的,c#,recursion,C#,Recursion,所以我知道这与函数是递归有关,但是代码如何知道何时将小于6的整数相乘才能找到阶乘呢。代码如何知道当达到6时何时停止乘法。如果这是一个循环,我可以完全理解这是如何可能的,但没有循环,我只是不明白 我还在学习c#的教程中,如果你能让它尽可能简单的话 任何帮助都将不胜感激。让我们逐步了解阶乘(6) 什么是阶乘(6)阶乘(5)*6 什么是阶乘(5)阶乘(4)*5 什么是阶乘(4)阶乘(3)*4 什么是阶乘(3)阶乘(2)*3 什么是阶乘(2)阶乘(1)*2 什么是阶乘(1)1 然后你从那里往回走,你会得

所以我知道这与函数是递归有关,但是代码如何知道何时将小于6的整数相乘才能找到阶乘呢。代码如何知道当达到6时何时停止乘法。如果这是一个循环,我可以完全理解这是如何可能的,但没有循环,我只是不明白

我还在学习c#的教程中,如果你能让它尽可能简单的话


任何帮助都将不胜感激。

让我们逐步了解
阶乘(6)

什么是阶乘(6)<代码>阶乘(5)*6

什么是阶乘(5)<代码>阶乘(4)*5

什么是阶乘(4)<代码>阶乘(3)*4

什么是阶乘(3)<代码>阶乘(2)*3

什么是阶乘(2)<代码>阶乘(1)*2

什么是阶乘(1)<代码>1

然后你从那里往回走,你会得到你的答案:


factorial(6)
=
1*2*3*4*5*6

了解如何调试代码:设置断点并逐行执行,以便了解其工作原理。查看
if
语句。当您到达
num=1
时,它将返回1。它没有达到6。从6到1,你想的方向不对。该方法从6乘以1,即基本条件。我应该认为,
阶乘(num-1)
中的负号是一个很好的暗示。伊恩·默瑟——你是什么意思?哦,我现在明白了。谢谢卡泽姆先生和宗正先生。
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();
      }
   }
}