#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intFib(int n){if(n <3){return1;}else{returnFib(n -1)+Fib(n -2);}}intmain(){int n =0;scanf("%d",&n);int ret =Fib(n);printf("%d\n", ret);return0;}
方法二:非递归法
思路:使用变量接收前两项之和 再使用前两项分别接收 前两项之和和第二项的值。主要 1 2 项为1。
#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intFib(int n){int tmp =0;int a =1;int b =1;if(n <3){return1;}while(n >2){tmp = a + b;a = b;//必须a先接收b 不然会导致b中值被覆盖b = tmp;n--;}return tmp;}intmain(){int n =0;scanf("%d",&n);int ret =Fib(n);printf("%d\n", ret);return0;}