[英]C recursive function - Calling function in main displays incorrect values
正确的是,我必须编写一个递归函数,该函数需要两个值并计算用户输入的两个值之间所有数字的总和。
例如,如果用户将范围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。
尝试这个:
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打印出两个整数。
电话:
sum(x+1,max);
有问题,最好有:
x++;
sum(x,max);
尽管我不确定这是造成您错误的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.