【发布时间】:2019-12-30 18:36:50
【问题描述】:
我正在尝试编写一个使用递归计算 1+2+3...+n 的程序。我刚开始学C,所以我很糟糕...... 这是我现在拥有的:
#include <stdio.h>
int adder;
adder=1;
int sum(int numba) {
if (adder==numba) {
return(sum);
}
return(sum+adder);
++adder;
}
int main() {
char line[100];
int nummba;
printf("Enter in a number: ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%d", nummba);
printf("The sum of numbers from 1 to %d is %d.", nummba, sum(nummba));
return(0);
}
显然不行... 如何使用递归解决 1+2+3...n? 谢谢。
【问题讨论】:
-
考虑到您在函数之外有一个通用语句,您显示的代码甚至不会构建。也许你的问题之一(你有更多)?如果您询问有关构建错误的问题,请在问题中包含您想知道的实际错误,并完整复制粘贴为文本。也请花一些时间阅读how to ask good questions,以及this question checklist。
-
递归函数的定义特征是它调用自身。您的功能不这样做。考虑一下如果没有变量
adder会怎样做,而不是使用对sum()的递归调用的返回值。 -
return(sum);- 除了函数本身之外,您没有任何名为sum的东西。请先编写一些代码来计算总和,这是编译并给出正确的结果。他们更改它以符合您的额外要求。更不用说C了。你能写出求和的递归公式吗? -
递归调用就像对任何函数的任何其他调用一样,语法完全相同。
标签: c function recursion sum definition