常用编程语言打印斐波那契数列比较
1,斐波那契数列介绍
斐波那契数列 (Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。具体是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
2,常用编程语言打印斐波那契数列
(1),python语言
打印小于1000的数列项
a, b = 0, 1
while a < 1000:
print(a, end=",")
a, b = b, a + b
(2),C语言
利用循环和递归两种方式打印数列前n项
#include<stdio.h>
int Fabio(int n) //循环
{
int i;
int f1 = 1;
int f2 = 1;
int f3 = 1;
for(i = 2;i<n;i++)
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f3;
}
int Fabio1(int n) //递归
{
if(n == 1||n ==2)
{
return 1;
}
else
{
return Fabio(n-1) + Fabio(n-2);
}
}
int main()
{
for(int i=1;i<7;i++)
{
printf("%2d",Fabio(i));
}
printf("\n");
for(int i=1;i<7;i++)
{
printf("%2d",Fabio1(i));
}
printf("\n");
return 0;
}
注: 由于C语言和C++语法一致,在此不做比较
(3),Java语言
第一种方法:直接赋值法
public class PrintFib {
public static void main(String[] args) {
int a = 1;
int b = 1;
for(int i = 1;i <= 5;i++) {
//循环打印a,b两个数,即两个两个打印
System.out.print(a + "\t" + b + "\t");
//打印第三、四个数
a = a + b;
b = a + b;
}
}
}
第二种方法:建立并打印数组
public class PrintFib {
public static void main(String[] args) {
//建立一个长度为10的数组用于存放数列中的数
int[] arr = new int[10];
//先定义数列中的第一个和第二个数
arr[0] = 1;
arr[1] = 1;
//建立一个for循环,打印数组中的元素
for(int i = 0;i < arr.length;i++) {
//判断:当打印第三个数前,给第三个数赋值
if(i > 1) {
arr[i] = arr[i - 2] + arr[i - 1];
}
System.out.print(arr[i] + "\t");
}
}
}
第三种方式:调用函数
public class PrintFib {
//建立一个函数,用于计算数列中的每一项
public static int fib(int num) {
//判断:是否是第一个数和第二个数
if(num == 1 || num == 2) {
return 1;
}else {
//循环调用本函数
return fib(num - 2) + fib(num - 1);
}
}
//主函数(程序入口)
public static void main(String[] args) {
//建立一个for循环,用于打印第一个至第十个数字
for(int i = 1;i <= 10;i++) {
//调用函数进行打印
System.out.print(fib(i) + "\t");
}
}
}
(4),JavaScript语言
//1.定义三个变量,然后两个初始化值。第三个作为存储使用
var temp;
var num1 = 1;
var num2 = 1;
//2.先把第二个变量存储进入第三个变量汇总,第二个变量重新赋值成为第一个和第二个之和
for(var i=1;i<=10;i++){
temp = num2;
num2 = num1 + num2;
//3.把存储好的第三个变量赋值给第一个变量。
num1 = temp;
//4.执行10次。(因为前两项不需要计算,所以只需要执行10次)
}
alert(num2);