繁体   English   中英

C递归函数-main中的调用函数显示不正确的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM