非递归实现:
核心思想:
f(1) = f(2) = 1;
f(n) = f(n-1) + f(n-2);
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int fib(int n)
{
int fn1= 1;
int fn2 = 1;
int fn ;
while (n > 2)
{
n = n - 1;
fn= fn1+fn2;
fn1 = fn2;
fn2 = fn;
}
return fn2;
}
int main()
{
int n = 0;
int ret = 0;
int count = 0;
scanf("%d", &n);
ret = fib(n);
printf("%d\n", ret);
system("pause");
return 0;
}
递归实现:
核心思想:
int fib_r( int n );
出口:
if( n<=2 )
return 1;
递推:
fib_(n - 1) + fib_( n - 2);
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int fib(int n)
{
if (n <= 2)
return 1;
else
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n = 0;
int ret = 0;
scanf("%d", &n);
ret = fib(n);
printf("%d\n", ret);
system("pause");
return 0;
}