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

模仿例题写的到底是哪里不正确了?我还有一个问题是为什么当n<=0时要加return 0;这里的意思是返回值为0吗?那么到最后的return sum时返回的是0?假如我把n改成-1,那么输出的是“0”还是“输出错误”?

#include <stdio.h>
int word(int n)
{
	int sum;
		if(n<=0)
		{
			printf(“输入有误\n");
			return 0;
		}
		else if(n==1)
		{
			sum=1;
		}
		else 
		{
			sum=word(n)+n;
			n--;
		}
		return sum;
}
int main()
{
	int n=10;
	printf("小明到第%d天一共学习了%d个单词",n,word(n));
	return o;
}


提问者:慕粉5652354 2015-10-25 16:06

个回答

  • 51cds
    2015-10-25 19:57:35
    已采纳

    1. 在你的代码中的第7行printf中的左分号为中文输入状态,需要改成英文输入状态,第16行的右括号也是如此,最后的return 应该是数字0,而不是字母o。还有在运行过程中陷入死循环,如果你把17行的n--与16行对调就能成功运行。

    2. 在使用return时,程序会退出当前函数并返回内容,当n<=0是会返回0,并且退出当前函数不会执行接下来的return sum。如果你把n改为-1,程序运行会输出:

      输入有误

      小明到第-1天一共学习了0个单词