这是正确的,我必须编写一个递归函数,它接受两个值并计算用户输入的两个值之间所有数字的总和。
例如,如果用户将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函数称为main函数错误。我是新手,所以我不确定最新情况。
如果有人可以帮助一个很棒的新手。
谢谢,GR412。
答案 0 :(得分:0)
试试这个:
int sum(int x, int max)
{
if (x == max)
return x;
return max + sum(x, max - 1);
}
你最后的打印功能应该是这样的
printf(" %i\n", sum(min, max));
因为你的sum
函数只返回一个值,但你告诉printf打印出两个整数。
答案 1 :(得分:-3)
电话:
sum(x+1,max);
有问题,最好:
x++;
sum(x,max);
虽然我不确定这是导致错误的原因。