#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);
}
写在第13行试试