C/C++非递归实现:
#include<cstdio>
#include<iostream>
using namespace std;
int fibonacci(int n)
{
int f1,f2,f3=0;
f1 = f2 = 1;
if(n==1 || n==2)
return 1;
for(int i=2; i<n; i++)
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f3;
}
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
printf("%d
", fibonacci(n));
}
return 0;
}
C/C++递归实现:
#include<cstdio>
#include<iostream>
using namespace std;
int fibonacci(int n)
{
if(n==1 || n==2)
return 1;
return fibonacci(n-1)+fibonacci(n-2);
}
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
printf("%d
", fibonacci(n));
}
return 0;
}
python3递归实现:
def Fibonacci(n):
if (n==1 or n==2):
return 1
else:
return Fibonacci(n-1)+Fibonacci(n-2)
n = int(input());
print(Fibonacci(n))
python3非递归实现:
def Fibonacci(n):
f1 = f2 = 1
f3 = 0
if (n==1 or n==2):
return 1
for i in range(n-2):
f3 = f1 + f2
f1 = f2
f2 = f3
return f3
n = int(input());
print(Fibonacci(n))