1. 程式人生 > >C語言實現斐波那契數列的兩種方法(遞迴和迭代)

C語言實現斐波那契數列的兩種方法(遞迴和迭代)

兩種方法實現斐波那契數列,遞迴實現起來稍簡單些,思路也清晰些,但執行效率顯然不如迭代

下面是編譯通過的兩種方式實現斐波那契數列的C語言程式碼:

/*
 * fibanacci.c
 *
 *  Created on: 2015-3-16
 *      Author: floydz
 */

#include <stdio.h>

/*
 * 關於long long的定義: 在C語言的C99標準擴充套件了新的整數型別 long long,long是32位寬,
 * 佔4個位元組,long long通常被定義成 64 位寬,也就可以實現了在32位機器上可以擴充套件8位元組的資料
 * 
 * I64d是對應的long long型別的printf列印識別符號
 */

/*
 * fibonacci_resursive 使用遞迴的方法實現
 */
long long fibonacci_recursive(int n) {
	if (n <= 0)
		return 0;
	if (n == 1)
		return 1;
	return fibonacci_recursive(n - 2) + fibonacci_recursive(n - 1);
}


/*
 * fibonacci_iteration使用迭代的方法實現
 */
long long fibonacci_iteration(int n) {
	int result[2] = { 0, 1 };
	int i = 2;
	long long num = 0;
	if(n < 2) {
		return result[n];
	}
	long long fib_minusone = 1;
	long long fib_minustwo = 0;
	for(;i <=n;i++) {
		num = fib_minusone + fib_minustwo;
		fib_minustwo = fib_minusone;
		fib_minusone = num;
	}
	return num;
}

int main() {
	int input;
	long long result1, result2;
	printf("請輸入數字n:\n");

	fflush(stdout);//重新整理標準輸出
	scanf("%d", &input);
	printf("你輸入的數字是:%d\n", input);
	fflush(stdout);
	result1 = fibonacci_recursive(input);
	result2 = fibonacci_iteration(input);
	printf("計算所得的Fibonacci_recursive(%d)值為%I64d:\n", input, result1);
	fflush(stdout);
	printf("計算所得的Fibonacci_iteration(%d)值為%I64d:\n", input, result2);
	fflush(stdout);
	return 1;
}

相關推薦

C語言實現數列方法)

兩種方法實現斐波那契數列,遞迴實現起來稍簡單些,思路也清晰些,但執行效率顯然不如迭代 下面是編譯通過的兩種方式實現斐波那契數列的C語言程式碼:/* * fibanacci.c * * Created on: 2015-3-16 * Author: flo

數列3解法(樸素、動態規劃、數學歸納)及演算法分析

本文來自網易公開課的<演算法導論>第3講分治法。讓我對分治法的使用有了一個新的認識斐波那契數列,又稱黃金分割數列,F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*) 下面我將使用Java(是的,又是Java,不過我覺得沒什麼問題,演

歸的應用C語言實現 函數

bsp std 技術 顯示 斐波那契數 cnblogs 分享 pri nbsp #include "stdio.h" int Fbi(int i) /* 斐波那契的遞歸函數 */{ if( i < 2 ) return i == 0 ? 0 : 1;

GO語言實現數列(Fibonacci)

斐波那契數列指的是這樣一個數列: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144… 這個數列從第3項開始,每一項都等於前兩項之和。 package main imp

C語言數列演算法迴圈,

#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 + f

C語言 java 數列

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、 因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入, 故又稱為“兔子數列”,指的是這

數列演算法的時間複雜度

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

數列解法

數列:1,1,2,3,5,8,13,21,34,55…….,被稱為斐波那契數列。 斐波那契數列特點:第一、第二個數為1,從第三個數開始,該值等於其前面兩個數之和。 本文主要解決計算第N個斐波那契數的值。 1. 遞迴 /** * 斐波那契數列

C語言經典演算法八)——實現數列方法

後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現斐波那契數列 1、 遞迴實現斐波那契數列Fib(n) <1> 題目描述:輸入n值,求解第n項的斐波那契數列值 <2> 方法一:概念法 <3> 方法二:遞迴法 斐波那契數列值是值1

C語言編程實現數列歸與非歸)

() code tdi clu return include 位置 c語言編程 數組 一.非遞歸 <1>數組 #include<stdio.h> #include<stdlib.h> int main() { int a[1000

C++實現數列

一個數 ngxin turn 版權 min clu mes bsp In 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一

c++實現數列程式碼

程式程式碼如下:#include<iostream> using namespace std; int Fbi(int i) { if (i<2) { return i==0 ? 0:1; } return

C++14嚐鮮,趣味程式設計:用lambda實現數列

斐波那契數列 #include <iostream> #include <utility> using namespace std; int main() { auto f

python實現數列筆記

log 得到 while span style mage lis nbsp images 斐波那契數列即著名的兔子數列:1、1、2、3、5、8、13、21、34、…… 數列特點:該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單: a=0 b=1

實現數列

指定 style tar https 遞歸 com code lan pri # 斐波那契數列# 1,1,2,3,5,8,13....1)用遞歸函數實現斐波那契數列:  (指定第幾個斐波那契數) def fib(n): if n == 1 or n == 2

Python 實現數列

斐波那契數列Python 遞歸實現斐波那契數列def fab(n): if n==1 or n==2: return 1 else: return fab(n-1)+fab(n-2)num=int(input(‘請輸入數字:‘))result=fab(num)print

python實現數列

定義函數 實現 python實現 code while 斐波那契數列 數列 int a+b 斐波那契數列 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 除第一項和第二項外,任意一項的值為前面兩項的和 定義函數 def fib(N): n,a,b

python實現數列數列

nbsp cci con 數學家 color span 分割 兔子 簡單 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,

JavaScript實現數列

斐波那契數列,又稱黃金分割數列,指的是這樣一個數列:1,1,2,3,5,8,13,21……從第3個數字開始,每個數字等於它前面兩個數字之和 方法1:遞迴 function fib(n){ if(n==1 || n==2){ return 1; }

實現數列js),以及複雜度降階

實現斐波那契數列(js),以及複雜度降階 背景——兔子數列 假設第1個月有1對剛誕生的兔子,第2個月進入成熟期,第3個月開始生育兔子,而1對成熟的兔子每個月會生1對兔子,兔子永遠不會死去……那麼,由1對兔子開始,12個月後會有多少對兔子呢? 問題分析: 我們拿新出生