【发布时间】:2019-02-03 03:24:47
【问题描述】:
由于我正在做的这个练习,我被困在这部分。我需要取两个数字并输出数字,直到它达到零,然后直到相同的值但为负。例如:
输入:
10, 2
输出:
10, 8, 6, 4, 2, 0, -2, -4, -6, -8, -10
我可以让它下降到零,但我用零来停止递归我不知道如何使用零让它上升到初始数字。
代码:
#include <stdio.h>
int recursion(int n, int m) {
if(n == 0) {
return n;
} else if(n > 0) {
printf("%d ", n);
return recursion(n - m, m);
} else if(n <= 0) {
printf("%d ", n);
return recursion(n + m, m);
}
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
printf("%d ", recursion(n, m));
return 0;
}
【问题讨论】:
-
为什么要用
0作为终结符?您知道 真正的 终止符,并且每次都不需要做任何事情,只需要一个算术运算。 -
@DaveNewton 我应该使用什么?编辑:我认为我应该使用 n 但 n 会减少函数的每次迭代,所以我如何存储 n 的初始值?
-
或者,您也可以在递归调用链的背面打印负数。即打印x;递归;打印-x。
-
你必须使用递归吗?这是一个简单的 for 循环:
for (i = n; i >= -n; i -= m),其中n是原始输入。 -
您是否有机会发布实际的练习文本/说明,以便我们了解您的具体要求?
标签: c