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

来源:7-1 Linux C递归函数之递归调用

把心刘

2016-10-25 21:45

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);
}

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

写回答 关注

2回答

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

    5810a0ae0001dd3b04670535.jpg

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

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

    5810a0ae00016ef903920120.jpg


    z3phyr 回复把心刘

    嗯嗯,编译器的差别吧

    2016-10-27 13:26:18

    共 2 条回复 >

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

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

    z3phyr 回复把心刘

    刚刚在电脑上敲了一遍你的代码发现问题了,你把 result定义了两遍,把20行的int去掉,直接用result接受函数的返回值。

    2016-10-26 20:19:02

    共 2 条回复 >

Linux C语言结构体

C语言的深入,帮助小伙伴们进一步的理解C语言,赶紧看过来

118294 学习 · 162 问题

查看课程

相似问题