C语言求第N项斐波那契数列的值
定义:斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89…自然中的斐波那契数列,这个数列从第3项开始,每一项都等于前两项之和。
思路:从定义中可知 斐波那契数列是每一项等于前两项之和,需要注意的就是 数列的第1、2项为1。
方法一:递归法
注意:使用递归要记住设置开始条件,并使得随着递归的深入逐渐靠近结束条件(其实就是开始条件)。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int Fib(int n) { if (n < 3) { return 1; } else { return Fib(n - 1) + Fib(n - 2); } } int main() { int n = 0; scanf("%d", &n); int ret = Fib(n); printf("%d\n", ret); return 0; }
方法二:非递归法
思路:使用变量接收前两项之和 再使用前两项分别接收 前两项之和和第二项的值。主要 1 2 项为1。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int Fib(int n) { int tmp = 0; int a = 1; int b = 1; if (n < 3) { return 1; } while (n > 2) { tmp = a + b; a = b;//必须a先接收b 不然会导致b中值被覆盖 b = tmp; n--; } return tmp; } int main() { int n = 0; scanf("%d", &n); int ret = Fib(n); printf("%d\n", ret); return 0; }