首页 > 解决方案 > 打印从 N 到 1 再从 1 到 N 的所有整数的递归函数

问题描述

我只是想问一下,考虑到 N 是由用户给出的,我如何使用 step -+2 和递归函数显示从 N 到 1 再到 N 的所有整数。例如,如果用户给出 7,则调用该函数将打印 <<7 5 3 1 3 5 7>> 或者如果参数为 8,它将打印 <<8 6 4 2 4 6 8>> 我只有想办法显示 N 到 1(或 N 到 2)。这是我的代码:

    int main()
{
    int a;
    printf("Give a:");
    scanf("%d", &a);
    func(a);
    return 0;
}

int func(int n)
{
    printf("\t%d",n);
    if (n==1 || n==2)
    {
        return 1;
    }
    return func(n-2);
}

标签: crecursion

解决方案


显然,我必须假设其他人都不是。要么就是这样,要么他们只是喜欢迟钝的代码。

void func(int n)
{
    if (n > 2)
    {
        printf("%d ", n);
        f(n-2);
    }
    printf("%d ", n);
}

应该是所有需要的。下面的实时示例

代码

#include <stdio.h>

void f(int n)
{
    if (n > 2)
    {
        printf("%d ", n);
        f(n-2);
    }
    printf("%d ", n);
}

int main()
{
    for (int i=0; i<=10; ++i)
    {
        f(i);
        fputc('\n', stdout);
    }
}

输出

0 
1 
2 
3 1 3 
4 2 4 
5 3 1 3 5 
6 4 2 4 6 
7 5 3 1 3 5 7 
8 6 4 2 4 6 8 
9 7 5 3 1 3 5 7 9 
10 8 6 4 2 4 6 8 10 

推荐阅读