1. 程式人生 > >用遞迴求斐波那契數

用遞迴求斐波那契數

斐波那契數是第一個數和第二個數都為1,從第三個數開始,後面的是是前面相鄰兩個數的和。定義的函式如下所示:

int fib(int m)
{
    if (m == 1 || m == 2)
        return 1;
    else
    {
        return  (fib(m - 1) + fib(m - 2));
    }
}

if語句為了確定第一位和第二位都為1,。完整的程式碼如下所示:

#include <stdio.h>
#include <stdlib.h>
int fib(int m)
{
	if (m == 1 || m == 2)
		return 1;
	else
	{
		return  (fib(m - 1) + fib(m - 2));
	}
}
int main()
{
	int m = 1; int n = 1; int i; int Fib = 1;//定義前兩個數為m,n初值都為1
	printf("%8d", m);
	printf("%8d", n);
	for (i = 3; i <= 30; i++)//只打印前30個
	{
		Fib = m + n;
		n = m;
		m = Fib;
		printf("%8d", Fib);
		if (i % 5 == 0)
			printf("\n");
	}
	printf("\n");
	printf("\n"); 
	for (i = 1; i <= 30; i++)//只打印前30個
	{
		printf("%8d", fib(i));
		if (i % 5 == 0)
			printf("\n");
	}
	printf("\n");
	system("pause");
	return 0;
}

在main函式中,用兩種方法列印了斐波那契數,第一種是普通的方法,而第二種呼叫了遞迴函式。

if(i%5==0) 

    printf("\n");是為了每五位列印一個換行,這樣看起來整齊。