黑马程序员技术交流社区
标题:
递归函数的返回值问题
[打印本页]
作者:
初楠
时间:
2015-5-1 23:12
标题:
递归函数的返回值问题
#include<stdio.h>
int fun(int n)
{ int t;
if(n==0 || n==1) t=3;
elsereturn n*fun(n-1);
return t ;
}
voidmain( )
{
printf("%d \n",fun(4));
}
执行结果:
72
为什么在fun(int n)函数中返回值为return t呢??求大神详解
作者:
Heartbeats、
时间:
2015-5-2 08:32
新手表示看着吃力啊,是不是代码错了
作者:
流风124
时间:
2015-5-2 21:09
给你写一下我理解的函数调用的过程吧
(1)n = 4:4 * fun(3)
(2)n = 3:3 * fun(2)
(3)n = 2:2 * fun(1)
(4)n = 1: t = 3,return t,也就是return 3
根据上述过程,函数返回值为:3 * 2 * 3 * 4 = 72
return t;其实是n = 1的时候的返回值,也就是代码可以变成
if (n == 1)
return 3;
t其实没什么必要,还有 n=0 的情况应该是不会出现
作者:
LLLX77
时间:
2015-5-2 21:42
执行return说明定义的条件都已不满足了,完成了筛选
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2