我想在两个其他数字之间加总每个数字(例如1到5将是sum = 9,2 + 3 + 4),但我的函数总是返回0而且老实说我不明白为什么。 希望你能帮助我,谢谢。 这是我的代码:
#include <stdio.h>
int inbetween_sum (int N1, int N2);
int main (int argc, char **argv) {
int n1, n2, sum;
printf("n1:\n");
scanf("%d", &n1);
printf("n2:\n");
scanf("%d", &n2);
sum = inbetween_sum(n1, n2);
printf("%d", sum);
return 0;
}
int inbetween_sum (int N1, int N2) {
int sum1 = 0;
if (N1 == N2) {
return sum1;
}
sum1 += inbetween_sum (N1+1, N2);
return sum1;
}
答案 0 :(得分:3)
行sum1 += inbetween_sum (N1+1, N2);
有问题。您返回或添加的所有内容均为0
,而不是实际数字。
将您的功能重写为:
int inbetween_sum (int N1, int N2) {
int sum1 = 0;
if (N1 >= N2 - 1) {
return sum1;
}
sum1 += N1 + 1 + inbetween_sum (N1+1, N2);
return sum1;
}
答案 1 :(得分:3)
您正在添加零。您必须在总和中添加N1 + 1
并更改停止条件
int inbetween_sum (int N1, int N2) {
int sum1 = 0;
if (N1 + 1 >= N2) {
return sum1;
}
sum1 += N1 + 1 + inbetween_sum (N1+1, N2);
return sum1;
}
同样将sum1初始化为0然后使用+ =并不清楚。您的代码可以重构为:
int inbetween_sum (int N1, int N2) {
if (N1 + 1 >= N2) {
return 0;
}
return N1 + 1 + inbetween_sum (N1+1, N2);
}