找奇数 输出逗号怎么整?

输入一个整数n,输出从一到n所有的奇数,用逗号间隔,每个词中间都用,但是最后不用逗号


#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d",1);
    for(int i=3;i<=n;i+=2)
        printf(",%d",i);
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7713694
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:输入一个数n,找出n的所有质数因子
  • 除此之外, 这篇博客: 从键盘输入一个整数n,求n阶斐波拉切级数中的 题解 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    方法一 :递推实现

    本题很简单,可以用一个数组a来存储斐波拉切级数,其中数组的下标对应n的值。预设a[ 0 ], a[ i ]为0,即可自底向上推出n级的结果 a[n]。

    #include <stdio.h>   //导入stdio.h库,里面包含输入输出函数
    
    int main() {
        int n;
        scanf("%d", &n);
    
        int a[26];
        a[0] = a[1] = 1;
        for (int i = 2; i <= n; i++) {
            a[i] = a[i - 1] + a[i - 2];
        }
        printf("%d\n", a[n]);
    }

     这是一个指数时间复杂度\bg_white O(n)的算法,线性时间复杂度,可以接受。


    方法二:递归实现

    如果已经学过函数的话,可以递归实现:

    #include <stdio.h>   //导入stdio.h库,里面包含输入输出函数
    
    /* 返回n级斐波拉契数 */
    int fib(int n) {
        if (n == 0 || n == 1)
            return 1;  //递归的终点
        return fib(n - 1) + fib(n - 2);  //递归调用自身
    }
    
    int main() {
        int n;
        scanf("%d", &n);
        printf("%d\n", fib(n));
    }

    当然,这里的递归没有优化,其效率和递归层次的承受度很低。不过对于本题AC够了。

    这是一个指数时间复杂度O(\alpha ^n)的算法,其中 \bg_white \alpha = (\sqrt{5} + 1) / 2,对...它就是优美的黄金分割率1.618...不过算法的运行效率随n呈指数增长,实在是不够优美.../(ㄒoㄒ)/~~


    其他方法 :

    实在学有余力的同学还可以去搜搜将斐波拉契数转化为矩阵的幂运算,并且是使用快速幂实现。这是一个对数时间复杂度O(log(n))的算法,也是目前来说求斐波拉契数的可以实践的最快算法。


    本文给出了三种经典的计算斐波拉契数的算法,并且进行了简简单单的时间分析...对于时间复杂度和效率的分析初学者了解即可...主要是斐波拉契数列的问题太经典了,我遇见这个话题就忍不住多码了点字哈哈哈~



    有任何问题欢迎评论交流,如果本文对您有帮助不妨点点赞,嘻嘻~ 



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^