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

时间:2016-03-09 17:54:21

标签: c function recursion sum

这是正确的,我必须编写一个递归函数,它接受两个值并计算用户输入的两个值之间所有数字的总和。

例如,如果用户将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。

Output of program

2 个答案:

答案 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);

虽然我不确定这是导致错误的原因。