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

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

 #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

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;
}

#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;
}

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

图片说明

```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));
}
}


 package thresh;

public class Test {
    public static void main(String[] args) {
        System.out.println("CJ.Madlife");
    }
}

```// 递归
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.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);
        }
    }
}