Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:若有一只免子每个月生一只小免子,一个月后小免子也开始生小兔子了。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。
如果不太理解这个例子的话,画个图就知道了,注意新生的小免子需一个月成长期才会生小兔子,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列,例如以下: 1、1 、2、3、5、8、13、21、34、55、89......
如果求N(代表任意月份)个月后有多少只兔子,用程序怎么计算呢?
我们用C语言编一个最简单的程序来解决这个问题,这里我们用到了数组知识。
#include <stdio.h> //头文件
#define N 20 //宏定义,这里我们就求第20个月的兔子数量吧
int main(void)
{
int Fib[N] = {0};
//创建了一个数组,并初始化,把每个成员都设为0.还记得scratch中我们讲过数组的概念,自己回忆一下.
int i;
Fib[0] = 0; //数组的第0位置0,还记得吧,电脑是从0开始计数的
Fib[1] = 1; //数组的第1位置0
for(i = 2; i < N; i++) //循环起来
Fib[i] = Fib[i-1] + Fib[i-2]; //这个你该懂得,小班Scratch都讲过
for(i = 0; i < N; i++) //循环起来
printf("%d ", Fib[i]); //把每个月的兔子数量依次打印出来
printf("\n");
return 0;
}
自己尝试更换一个月份试一下,数组后面老师还会详细讲解,自己先体验一下。
备注:有些Win10的系统在给程序起名字时,不支持空格,而notepad默认起名字时带一个空格,例如new 1.cpp,记得一定要把那个空格去除,否则可能编译不过去。
如果不太理解这个例子的话,画个图就知道了,注意新生的小免子需一个月成长期才会生小兔子,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列,例如以下: 1、1 、2、3、5、8、13、21、34、55、89......
如果求N(代表任意月份)个月后有多少只兔子,用程序怎么计算呢?
我们用C语言编一个最简单的程序来解决这个问题,这里我们用到了数组知识。
#include <stdio.h> //头文件
#define N 20 //宏定义,这里我们就求第20个月的兔子数量吧
int main(void)
{
int Fib[N] = {0};
//创建了一个数组,并初始化,把每个成员都设为0.还记得scratch中我们讲过数组的概念,自己回忆一下.
int i;
Fib[0] = 0; //数组的第0位置0,还记得吧,电脑是从0开始计数的
Fib[1] = 1; //数组的第1位置0
for(i = 2; i < N; i++) //循环起来
Fib[i] = Fib[i-1] + Fib[i-2]; //这个你该懂得,小班Scratch都讲过
for(i = 0; i < N; i++) //循环起来
printf("%d ", Fib[i]); //把每个月的兔子数量依次打印出来
printf("\n");
return 0;
}
自己尝试更换一个月份试一下,数组后面老师还会详细讲解,自己先体验一下。
备注:有些Win10的系统在给程序起名字时,不支持空格,而notepad默认起名字时带一个空格,例如new 1.cpp,记得一定要把那个空格去除,否则可能编译不过去。