斐波那契数
作为一个小白,这是一个必经之路,当然我也是,这算我的学习历程。
斐波那契数基础分为递归法和循环法。
先上一个循环法
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int a, c;
int f1, f2;
f1 = f2 = 1;
int n;
a = 3;
printf("please enter the number of Fibonacci number :");
scanf("%d", &n);
if (n == 1 || n == 2)
printf("Fibornacci number = %d\n", f1);
if (n > 2)
{
while (a <= n)
{
c = f1 + f2;
f1 = f2;
f2 = c;
a++;
}
printf("Fibornacci number = %d\n", c);
}
return 0;
}
里面交换并增加,像我思考问题,循环过多,就降低思考的量,在循环里好理解,不用过多分析,但在递归中这就是一个超大的工程,只能找规律,取特例。比如说:要求递归一百次,找好规律后,就取一次或两次,这样分析,好处大大的。(对于像我这样的真*白,大佬就不要看了)
现在,看看递归,这个让人又爱又恨的玩意儿。
`
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int num(int n);
int main(void)
{
int a, b;
int n;
printf("please enter the number of Fibornacci number:");
scanf("%d", &n);
int c = num(n);
printf("the Fibornacci = %d\n", c);
return 0;
}
int num(int n)
{
if (n == 1 || n == 2)
return 1;
else if (n >= 3)
return num(n - 1) + num(n - 2);
}
#define _CRT_SECURE_NO_WARNINGS
这个是一个大佬教的,VS2019 中不让使用 scanf,用来这串代码,可以使用scanf,虽然也会报警,但不会报错,培养好习惯。嘿嘿黑。
纯粹的傻瓜教程,大佬勿喷,喷子勿进。都是自己写的,后面还有其它的,支持一下。
都是可以运行的。谢谢