C# 我只是不明白这段代码是如何计算给定数字的阶乘的
所以我知道这与函数是递归有关,但是代码如何知道何时将小于6的整数相乘才能找到阶乘呢。代码如何知道当达到6时何时停止乘法。如果这是一个循环,我可以完全理解这是如何可能的,但没有循环,我只是不明白 我还在学习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)<代码>阶乘(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();
}
}
}