问答详情
源自:7-1 Linux C递归函数之递归调用

关于在VS2008上运行出错的问题

http://img.mukewang.com/580f60f20001397a04710211.jpg

#include <stdio.h>
int func(int n){
	int r;
	if(n<0)
		printf("data error\n");
	else if(n==0 || n==1)
		r=1;
	else
		r=n * func(n-1);
	return r;
}

int main(){
	int n;
	int result=func(n);

	printf("please input n\n");
	scanf_s("%d",&n);

	int result=func(n);
	printf("result=%d\n",result);
}

其实代码和课程里的一样,关于这个报错,有人能帮忙解决一下吗?谢谢。

提问者:把心刘 2016-10-25 21:45

个回答

  • z3phyr
    2016-10-26 20:26:34

    5810a0ae0001dd3b04670535.jpg

    直接拷贝的你的代码,把15行去掉了,在19行声明 的result 。

    这是运行结果。编译器用的是gcc。

    5810a0ae00016ef903920120.jpg


  • z3phyr
    2016-10-26 04:40:10

    把14行改成int n=0;试试看。你定义了n没赋初值就直接15行开始计算当然会报错。