黑马程序员技术交流社区

标题: 递归函数的返回值问题 [打印本页]

作者: 初楠    时间: 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