1. 程式人生 > >C語言 java 斐波那契數列

C語言 java 斐波那契數列

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、
因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,
故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……

在數學上,斐波納契數列以如下被以遞迴的方法定義:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

這個數列從第3項開始,每一項都等於前兩項之和。
/**
feibonaci.c
*/
#include<stdio.h>
int Fibonacci(int n)
{
    return n < 2 ? 1 : (Fibonacci(n-1) + Fibonacci(n-2));
}
int main()
{
    int i=0;
    for(i=0;i<15;i++)
        printf("%d ",Fibonacci(i));
    return 0;
}

結果:

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610

非遞迴實現:

//斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
//144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
//
//這個數列從第3項開始,每一項都等於前兩項之和。
#include<stdio.h>

void main()
{
    int n=20;//前n項斐波那契數列數列
    int first=1;
    int second=1;
    int third=0;
    int i;
    for(i=1;i<=n;i++)
    {
        if(i<=2)
            printf("%-6d",1);
        else
        {
            third=first+second;
            printf("%-6d",third);//第三項等於前兩項之和
            first=second;//前移第一項
            second=third;//前移
        }
        if(i%10==0)
            printf("\n");
    }
}

結果:

1     1     2     3     5     8     13    21    34    55
89    144   233   377   610   987   1597  2584  4181  6765

java實現:

package Ctojava;

public class Feibonaci
{
	static int feibonaci(int n)
	{
		return n<2 ? 1 : feibonaci(n-1)+feibonaci(n-2);
	}
	public static void main(String[] args)
	{
		for(int i=0;i<15;i++)
		{
			System.out.print(feibonaci(i));
			if(i<14)
				System.out.print(",");
			else
				System.out.println("...");
		}
	}
}
結果:
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610...