Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
请问老师,关于递归函数练习中的问题搞不懂。
灵通发起了问答2022-07-20
4
回复
225
浏览

static int F(int n)
        {
            if (n == 1)
            {
                 return 1;
            }
            return n = n * F(n - 1);
        }

1、这个return 1,付给了哪一个值?

2、为什么break不能用?

3、if里面的return应该是结束if循环吧,为什么加了if语句,下面的return n = n * F(n - 1);就不运行了?

所有回复
  • 老师_Trigger 2022-07-20

    同学你好

    1.就是作为方法的返回值返回出去了

    2.方法跳出用return

    3.return是直接跳出当前的方法

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 灵通 2022-07-21

    感谢老师的回复,给您添麻烦了,但是学生愚钝,还是没有开窍,下列程序中当我把if中的return 返回值设置为100,返回值为7200,换句话说,是不是符合if条件return后,还是执行了一次if语句下面的方程式后再跳出的。

    1、为什么没有跳出而是再执行一次呢?

    2、if条件中的return=100,是付给了F(),还是付给了n?在最后一次计算中n是等于100,还是72?

    static int F(int n)
            {
                if (n == 10)
                {
                     return 1000;
                }
                return n=F(n+1)*n;
            }
            
            static void Main(string[] args)
            {
                         Console.WriteLine(F(8));

            }

    • 老师_Trigger 2022-07-21

      同学不用客气
      1.if满足条件就立刻在上边跳出,不满足走下边公式继续递归调用,就是再调用一次方法,如果当前是8,传进去的就是F(9)*8
      2.F()是一个方法,返回值就返回出去给了一个变量,这个变量是同学外部定义的,同学可以把他理解为,如果n=10,返回值就是1000,否则就一直调用自己,F(8)->F(9)*8->F(10)*9*8->1000*9*8按这个顺序计算的

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • 灵通 2022-07-22

    谢谢老师,非常详细,终于搞明白了。laugh

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!