#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;
}
如何以递增的顺序打印奇数? 它打印10 8 6 4 2 1 3 5 7 9。 我知道最多10 8 6 4 2但它怎么打印1 3 5 7 9?降序后?
答案 0 :(得分:3)
有嵌套调用Magic(in - 1);
。如果数字是偶数,则立即打印,然后调用Magic(in - 1);
。仅当n
为零时,所有函数才会以相反的顺序打印偶数。第一个奇数由最深的Magic()
函数打印:
Magic(10)
|print 10
|Magic(9)
| |Magic(8)
| | print 8
| | ...
| | Magic(1)
| | Magic(0)
| | return;
| | print 1
| | return
| | ...
| | return
| |print 9
| |return
|return
答案 1 :(得分:0)
这是由函数的递归引起的。函数按照调用的顺序返回。如果你想在偶数后按降序打印奇数,你需要将它们保存在一个也传递给魔术函数的变量(数组)中