hutods
hutods
2015-12-12 15:52
采纳率: 100%
浏览 2.6k
已采纳

C语言打印费波拉契数列的前10项

C语言打印费波拉契数列的前10项,请使用递归完成,不能使用循环,怎么做?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • caozhy
    已采纳
     #include <stdio.h>
    
    void foo(int x, int y, int acc)
    {
        if (acc > 10) return;
        printf("%d ", x);
        foo(y, x + y, acc + 1);
    }
    
    int main()
    {
        foo(1, 1, 1);
    }
    

    1 1 2 3 5 8 13 21 34 55

    点赞 评论
  • clam1234
    clam1234 2015-12-12 16:53

    int f(int n)
    {
    if(n==1)
    {
    printf(“1”);
    return 1;
    }
    else if(n==2)
    {
    printf(“2”);
    return 2;
    }
    else
    {
    int t = f(n-1)+f(n-2);
    printf(“%d”,t);
    return t;
    }

    点赞 评论
  • cuiwei1026522829
    另一花生 2015-12-12 17:28

    #include
    int main()
    {
    int i_1=1,i_2=1,i,n,t;
    printf("输入斐波拉契数列项数\n");
    scanf("%d",&n);
    if(n==1)
    {
    printf("1\n");
    return 0;
    }
    printf("1 1\n");
    if(n==2)
    return 0;
    for(i=3;i<=n;i++)
    {
    t=i_1+i_2;
    i_1=i_2;
    i_2=t;
    printf("%d ",i_2);
    }
    printf("\n");
    return 0;
    }

    点赞 评论
  • zkflame
    锤石是种信仰吗 2015-12-12 17:52

    斐波那契就是用递归写起来是代码最少的
    你仔细想下,不难的。

    点赞 评论
  • zkflame
    锤石是种信仰吗 2015-12-12 18:11

    图片说明

    点赞 评论
  • zkflame
    锤石是种信仰吗 2015-12-12 18:43

    ```package thresh;

    import java.util.Scanner;

    // 递归
    public class Fibonacc {
    public static void main(String[] args) {
    System.out.println("输入Fibonacc数列长度:");
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    System.out.println("输出Fibonacc数列前" + n + "项:");
    for (int j = 1; j <= n; j++) {
    System.out.print(getFibonacc(j) + "\t");
    if (j % 5 == 0) {
    System.out.println();
    }
    }
    }

    // 逻辑很简单,第一个数,第二个数字都是1,后面的数字都遵循前面2个数的和
    static int getFibonacc(int i) {
        if (i == 1 || i == 2) {
            return 1;
        } else {
            return getFibonacc(i - 1) + getFibonacc(i - 2);
        }
    }
    

    }

    数组也可以:
    package thresh;

    import java.util.Arrays;
    import java.util.Scanner;

    public class Fibonacc_arr {
    public static void main(String[] args) {
    System.out.println("输入Fibonacc数列的长度:");
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    int[] arr = new int[n];
    // 数列前2个元素都是1
    arr[0] = 1;
    arr[1] = 1;
    for (int i = 2; i < arr.length; i++) {
    // 遵循斐波那契数列规律
    arr[i] = arr[i - 1] + arr[i - 2];
    }
    System.out.println("输出Fibonacc数列前" + n + "项");
    System.out.println(Arrays.toString(arr));
    }
    }

    
    
    点赞 评论
  • zkflame
    锤石是种信仰吗 2015-12-12 18:58
     package thresh;
    
    public class Test {
        public static void main(String[] args) {
            System.out.println("CJ.Madlife");
        }
    }
    
    
    点赞 评论
  • zkflame
    锤石是种信仰吗 2015-12-12 19:15

    ```// 递归
    public class Fibonacc {
    public static void main(String[] args) {
    System.out.println("输入Fibonacc数列长度:");
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    System.out.println("输出Fibonacc数列前" + n + "项:");
    for (int j = 1; j <= n; j++) {
    System.out.print(getFibonacc(j) + "\t");
    if (j % 5 == 0) {
    System.out.println();
    }
    }
    }

    // 逻辑很简单,第一个数,第二个数字都是1,后面的数字都遵循前面2个数的和
    static int getFibonacc(int i) {
        if (i == 1 || i == 2) {
            return 1;
        } else {
            return getFibonacc(i - 1) + getFibonacc(i - 2);
        }
    }
    

    }

    
    
    点赞 评论
  • zkflame
    锤石是种信仰吗 2015-12-12 19:22
    package thresh;
    
    import java.util.Scanner;
    
    // 递归
    public class Fibonacc {
        public static void main(String[] args) {
            System.out.println("输入Fibonacc数列长度:");
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            System.out.println("输出Fibonacc数列前" + n + "项:");
            for (int j = 1; j <= n; j++) {
                System.out.print(getFibonacc(j) + "\t");
                if (j % 5 == 0) {
                    System.out.println();
                }
            }
        }
    
        // 逻辑很简单,第一个数,第二个数字都是1,后面的数字都遵循前面2个数的和
        static int getFibonacc(int i) {
            if (i == 1 || i == 2) {
                return 1;
            } else {
                return getFibonacc(i - 1) + getFibonacc(i - 2);
            }
        }
    }
    
    
    
    点赞 评论

相关推荐