斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)。
解法1:(尾递归)
#include<stdio.h>
int fib(int n);
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",fib(n));
return 0;
}
int fib(int n)
{
if(n<=2)
return 1;
else
return fib(n-2)+fib(n-1);
}
解法二:
#include<stdio.h>
int main()
{
int n;
int f0=1,f1=1,currentNumber=0;
scanf("%d",&n);
if(n<=2)
currentNumber = 1;
else
{
for(int i=2;i<n;i++)
{
currentNumber = f0+f1;
f0=f1;
f1=currentNumber;
}
}
printf("%d\n",currentNumber);
return 0;
}
问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
8 3 6 4 9
样例输出
3 4 6 8 9
#include<stdio.h>
int main()
{
int n;
int f0=1,f1=1,currentNumber=0;
scanf("%d",&n);
if(n<=2)
currentNumber = 1;
else
{
for(int i=2;i<n;i++)
{
currentNumber = (f0+f1)%10007;
f0=f1;
f1=currentNumber;
}
}
printf("%d\n",currentNumber);
return 0;
}
思想:只要求得出余数,分布求余。