问题描述:斐波那契数列是这样一个数列:1、1、2、3、5、8、13、21…第n个数是第(n-1)个数和第(n-2)个数的和;
方法1:使用递归的方法求第n个斐波那契数;
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int fibonacci(int n){
if (n <= 2){
return 1;
}
else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main(){
int n;
printf("请输入要求的斐波那契数的位数:\n");
scanf("%d", &n);
int ret = fibonacci(n);
printf("%d", ret);
system("pause");
return 0;
}
方法2:使用非递归的方法(迭代法)求第n个斐波那契数;
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
int n;
printf("请输入要求的斐波那契数的位数:\n");
scanf("%d", &n);
int a = 1;
int b = 1;
int c = 0;
while (n >2){
c = a + b;
a = b;
b = c;
n--;
}
printf("%d\n",c );
system("pause");
return 0;
}