A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 初楠 中级黑马   /  2015-5-1 23:12  /  838 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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呢??求大神详解

3 个回复

正序浏览
执行return说明定义的条件都已不满足了,完成了筛选
回复 使用道具 举报
给你写一下我理解的函数调用的过程吧

(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 的情况应该是不会出现
回复 使用道具 举报
新手表示看着吃力啊,是不是代码错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马