c语言关于函数的递归调用问题
不是很明白这个代码的意思,只知道不断地在调用自己,但是为啥输出的是五个一。谁能解释一下执行的过程....
不是很明白这个代码的意思,只知道不断地在调用自己,但是为啥输出的是五个一。谁能解释一下执行的过程.
展开
展开全部
一般来说是自己调用自己,一般有两个分支,一个分支是调用自己,还有一个分支是结束条件如求n! int f(int n) { if(n==1) //这个是结束条件 return 1; else //这个是调用自己的分支 return n*f(n-1); } 还有一个比较复杂一点,是双向调用,也就是a函数调用b函数,b函数在调用a函数这样循环调用,其实基于这个道理,还有多个函数互相调用,不过这样的情况很少见但万变不离其宗,每个函数都有两个分支,一个是结束条件,一个是调用函数
展开全部
它是在“不断地将‘形参的值-1后’再调用自己”,且形参的值不小于0。
而且在形参为正数时,返回前打印一行“1”。
因为最初的形参是5,所以共打印5行1。
而且在形参为正数时,返回前打印一行“1”。
因为最初的形参是5,所以共打印5行1。
更多追问追答
追问
执行Func(n-1)后,是执行printf语句还是继续执行Func(n-1).
追答
执行完Func(n-1)后,才是执行printf语句
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Func(5),n=5,此时n>0,执行Func(4),输出1
Func(4),执行Func(3),输出1
Func(3),执行Func(2),输出1
Func(2),执行Func(1),输出1
Func(1),执行Func(0),输出1
Func(0),0>0为假,return,故输出5个1
Func(4),执行Func(3),输出1
Func(3),执行Func(2),输出1
Func(2),执行Func(1),输出1
Func(1),执行Func(0),输出1
Func(0),0>0为假,return,故输出5个1
追问
是每执行一次Func(n-1)后,都执行一次printf?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询