【发布时间】:2016-03-09 17:54:20
【问题描述】:
没错,我必须编写一个递归函数,它接受两个值并计算用户输入的两个值之间所有数字的总和。
例如,如果用户将 4 作为第一个值,将 7 作为第二个数字,它应该将总和打印为 22。作为 4+5+6=7 = 22。
到目前为止,我编写的这段代码可以正常工作,但输出错误。
#include <stdio.h>
int sum( int x, int max )
{
if (x = max)
return x;
else
return (x + sum( x+1, max));
}
int main()
{
int min, max;
printf("Enter your min value: ");
scanf("%i", &min);
printf("Enter your max number: ");
scanf("%i", &max);
printf("\n");
printf(" %i\n %i\n", sum(min, max)); //calls the sum function and prints out the sum of the range of values
return 0;
}
正如您在底部图像中看到的那样,它不会打印出正确的答案,它只会打印出最大值 (7) 以及奇数负数。
我的感觉是,我在最后一个 printf 的 main 中调用了错误的 sum 函数。我是函数新手,所以我不太确定发生了什么。
如果有人可以帮助新手,那就太好了。
谢谢,GR412。
【问题讨论】:
-
回顾“检查相等性”。 5号线
-
如果它给出了错误的输出,你所说的“某种作品”是什么意思?
-
@JohnColeman 对于很多人来说,'sort of works' 意味着编译器停止了哭泣。 :\
-
@JohnColeman 我不确定这是否是一个新手要说的东西,但如果有什么东西为我编译,它在我的脑海中“有点工作”。当然它实际上不起作用。但它运行。
-
负数是未定义行为的结果。
main()中的最后一个printf有一个格式字符串,它需要 2 个整数参数,但您只提供 1 个整数参数。