不用循环语句如何用递归打印出斐波那契数列?


#include <stdio.h>

int fibonacci(int num){
    if(num==1 || num==2){
        return 1;
    }else{
        return fibonacci(num-1)+fibonacci(num-2);
    }
}
int main(void)
{    
    fibonacci(9);
    return 0;
}

不要用for循环语句,printf该写在哪里才能打印出斐波那契数列。

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include <stdio.h>
int fibonacci(int num, int a,int b){
    printf("%d ",b);
    if(num>1){
        fibonacci(num-1,b,a+b);
    }
}
int main(void)
{
    fibonacci(9,0,1);
    return 0;
}

#include <stdio.h>

int dp[1000] = {0};

int fibonacci(int num){
    int ans = 1;
    if(num==1 || num==2){
        ans = 1;
    }else{
        ans = fibonacci(num-1)+fibonacci(num-2);
    }
    if(!dp[num]) {                             // 比你的代码多加这一段判断
        dp[num] = 1;
        printf("%d ", ans);
    }
    return ans;
}

int main(void)
{    
    fibonacci(9);
    return 0;
}

这么写可以不用循环输出完整序列:

#include<stdio.h>
int a[5000]= {0};
int digui(int n)
{
    int x;
    if(n==1||n==2)
        x=1;
    else
        x=digui(n-1)+digui(n-2);
    if(a[n]==0)
    {
        a[n]=1;
        printf("%d ",x);
    }
    return x;
}
int main()
{
    int n;
    digui(9);
}

img

写在第13行试试