C 奇数如何打印递增顺序? #包括 #包括 虚幻魔法(int-in); 整数偶数(整数n); int main() { 魔术(10); } 虚空魔法(int-in) { 如果(in==0) { 回来 } 如果(偶数) { printf(“%i\n”,in); } 魔术(in-1); 如果(!偶数(in)) { printf(“%i\n”,in); } 回来 } 整数偶数(整数n) { 返回(n%2)==0?1:0; }

C 奇数如何打印递增顺序? #包括 #包括 虚幻魔法(int-in); 整数偶数(整数n); int main() { 魔术(10); } 虚空魔法(int-in) { 如果(in==0) { 回来 } 如果(偶数) { printf(“%i\n”,in); } 魔术(in-1); 如果(!偶数(in)) { printf(“%i\n”,in); } 回来 } 整数偶数(整数n) { 返回(n%2)==0?1:0; },c,C,奇数是如何按递增顺序打印的? 它打印的是108642135779。 我知道多达10 8 6 4 2,但它怎么会打印1 3 5 7 9?降序后?有嵌套调用Magic(在-1中)。如果数字为偶数,则立即打印,然后Magic(in-1)被调用。只有当n为零时,所有函数才会按相反顺序打印偶数。第一个奇数由最深的Magic()函数打印: #include <stdio.h> #include<string.h> void Magic(int in); int Even(int n

奇数是如何按递增顺序打印的? 它打印的是108642135779。
我知道多达10 8 6 4 2,但它怎么会打印1 3 5 7 9?降序后?

有嵌套调用
Magic(在-1中)。如果数字为偶数,则立即打印,然后
Magic(in-1)被调用。只有当
n
为零时,所有函数才会按相反顺序打印偶数。第一个奇数由最深的
Magic()
函数打印:

#include <stdio.h>
#include<string.h>

void Magic(int in);
int Even(int n);

int main()
{
    Magic(10);
}

void Magic(int in)
{
    if(in == 0)
    {
        return;
    }
    if(Even(in))
    {
        printf("%i\n", in);
    }

    Magic(in - 1);

    if(!Even(in))
    {
        printf("%i\n", in);
    }
    return;
}

int Even(int n)
{
    return (n % 2) == 0 ? 1 : 0;
}

这是由函数的递归引起的。函数正在按调用顺序返回。如果你想在偶数之后按降序打印奇数,你需要将它们保存在一个变量(数组)中,该变量也会传递给魔法函数

为什么在编辑之前发布了这个问题的答案,使问题变得正常?@MartinJames为什么要回滚到破坏版本?>@James Martini将您的编辑回滚到更合适的版本。所有这些都毫无意义。。我想我现在要喝醉了。如果我搞砸了,对不起——我只喝了半瓶斯托利酒
Magic(10)
   |print 10
   |Magic(9)
   |   |Magic(8)
   |   |    print 8
   |   |    ...
   |   |        Magic(1)
   |   |            Magic(0)
   |   |                return;
   |   |            print 1
   |   |            return
   |   |    ...
   |   |    return
   |   |print 9
   |   |return
   |return