递归求法:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int Fib(int n){
if (n == 1 || n == 2){
return 1;
}
else{
return Fib(n - 1) + Fib(n - 2);
}
}
int main(){
int num;
printf("请输入你要实现的第n个斐波那契数:\n");
scanf("%d", &num);
printf("%d", Fib(num));
printf("\n");
system("pause");
return 0;
}
用递归的方法来求斐波那契数时,当你求的数比较大时,由于运算量特别大(可能一个斐波那契数通过递归可能要重复的求很多次),它的结果出现的就会比较慢
非递归
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
int num;
printf("请输入你要求的第n个斐波那契数:\n");
scanf("%d", &num);
if (num == 1 || num == 2){
return 1;
}
else{
int m1 = 1;
int m2 = 1;
int fib = 0;
for (int i = 3; i <=num;i++){
fib = m1 + m2;
m1 = m2;
m2 = fib;
}
printf("%d\n", fib);
}
system("pause");
return 0;
}