我卡在这部分从这个练习中,我做。我需要两个数字输出的数字,直到达到零,然后直到相同的值,但负。例如:
输入: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;
}
我怀疑这次演习的目的是要具备的功能打印,同时通过递归出发的人数和打印的出路了否定:
#include <stdio.h>
static void recursion(int n, int m)
{
printf("%d ", n);
if (n <= 0)
return;
recursion(n-m, m);
printf("%d ", -n);
}
int main()
{
int n, m;
scanf("%d %d", &n, &m);
recursion(n, m);
printf("\n");
return 0;
}
我会尽量回答我最好的回答这个问题。但是,请记住,这个解决方案,只有当减法数(即M)减去(M)以这样的方式,在某些时候,它会给你0,当你继续减去男,如果它不那么这个解决方案的工作还将继续递归下去。
`int recursion(int n, int m) {
if(n == 0) {
printf("0 ");
} else {
printf("%d ", n);
return recursion(n - m, m);
printf("%d ", -n);
}
}`
我认为递归的基本情况是不好的。我调整基本情况,以便它可以正确地停止。这里是我的解决方案:
#include <stdio.h>
#include <math.h>
int recursion(int n, int m, int upperLimit) {
if (n < upperLimit && abs(n-m) >= upperLimit) {
return n;
}
printf("%d ", n);
return recursion(n - m, m, upperLimit);
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
printf("%d ", recursion(n, m, n));
return 0;
}