C#递归的理解方法及过程

在学习时碰到了递归的讲解,将理解思路记录。

代码:

using System;

namespace CalculatorApplication
{
    class NumberManipulator
    {
        public int factorial(int num)
        {
            /* 局部变量定义 */
            int result;

            if (num == 1)
            {
                return 1;
            }
            else
            {
                result = factorial(num - 1) * num;
                return result;
            }
        }
    
        static void Main(string[] args)
        {
            NumberManipulator n = new NumberManipulator();
            //调用 factorial 方法
            Console.WriteLine("6 的阶乘是: {0}", n.factorial(6));
            Console.WriteLine("7 的阶乘是: {0}", n.factorial(7));
            Console.WriteLine("8 的阶乘是: {0}", n.factorial(8));
            Console.ReadLine();

        }
    }
}

该段代码是用来计算输入数字的阶乘,

在传入一个6时,不等于1,进入else,减一,传入5,第二次调用;

第二次调用不等于1,进入else,减一,传入4,第三次调用;

第三次调用不等于1,进入else,减一,传入3,第四次调用;

第四次调用不等于1,进入else,减一,传入2,第五次调用;

第五次调用不等于1,进入else,减一,传入1,第六次调用;

第六次调用等于1,return 1 ,

递归不下去了,得到了最终的结果为1,开始网上继续计算未完成的步骤(即:*num)

第五次调用得到第六次的结果为1 *num,当前为2,得到结果result 为2;

第四次调用得到第五次的结果为2 *num,当前为3,得到结果result 为6;

第三次调用得到第四次的结果为6 *num,当前为4,得到结果result 为24;

第二次调用得到第三次的结果为24*num,当前为5,得到结果result 为120;

第一次调用得到第二次的结果为120 *num,当前为6,得到结果result 为720;

至此整个递归结束

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值