问答详情
源自:5-7 递归函数(一)

C的返回值,具体返回到了哪里

比如下面这段代码

#include<stdio.h>
int factorial(int n){
	int result;
	if(n<0)
	{
		printf("输入错误!\n");
		return 0;
	}
	else if(n==0 || n==1)
	{
		result=1;
	}
	else
	{
		result=factorial(n-1)*n;
	}
	return result;
}

int main(){
	int n=5;
	printf("%d的阶乘=%d\n",n,factorial(n));
	return 0;
}

三种情况分别有三个不同的返回值,那么这些返回值最后返回到了哪里,又对程序运行的最终结果产生了什么影响

提问者:大西young 2017-02-07 11:50

个回答

  • 努力并奋斗
    2017-03-14 22:37:33
    已采纳

    一共有return 0;  return result;  return 0; 三次返回值,第一个是当满足条件时,把0返还给函数,相当于复位,

    第二次是吧result的值返还给函数,这里result=factorial(n-1)*n,经过计算可得=120,后面在主函数main处调用; 第三次是把0返还主函数main。      望采纳

  • 懒光
    2017-02-07 23:41:46

    这不是函数递归么  你可以设n=3,然后自己心里或手动模拟这段程序;再试试n=4,n=5 应该会明白的