python編寫遞歸函數和非遞歸函數、輸出斐波那契數列_分別用非遞歸和遞歸的方法編寫函數求斐波那契數列第n項。斐波那契數列1,1,2,3,5,8,13,…...

展開全部

/**

已知Fibonacci數列:1,1,2,3,5,8,……,F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)

*/

#include

#include

typedef long long int int64;

//方法1,遞歸法

int64 Fibonacci(int n)

{

int64 sum;

if(n<=0)

{

printf("參數值e68a84e8a2ad3231313335323631343130323136353331333433616236非法!\n");

exit(-1); //直接終止程序

}

if(n==1 || n==2)

return 1;

else

sum=Fibonacci(n-1)+Fibonacci(n-2);

return sum;

}

非遞歸法

int64 Fibonacci2(int n)

{

int64 a,b,c;

if(n<=0)

{

printf("參數值非法!\n");

exit(-1); //直接終止程序

}

if(n==1 || n==2)

return 1;

a=b=1; ?//對前兩項的值初始化

n=n-2; ?//因為是從第3項開始記次數,所以減2

while(n > 0)

{

c=a+b;

a=b;

b=c;

n--;

}

return c;

}

//測試主函數

int main()

{

int n;

scanf("%d",&n); //輸入n

//printf("F(%d)=%lld\n",n,Fibonacci(n));

printf("F(%d)=%lld\n",n,Fibonacci2(n));

return 0;

}

//示例運行結果

F:\c_work>a.exe

5

F(5)=5

F:\c_work>a.exe

6

F(6)=8

program fibo;var n,i:integer; rs:extended;function fib(m:integer):extended;var a,b:extended;

begin

a:=1;b:=1;if m<=2 then exit(1)else while m>3 do begin

fib:=a+b;a:=b;b:=fib;m:=m-1;end;exit(fib);end;

begin

read(n);writeln(fib(n));end.

擴展資料:

從第二項開始,每個偶數項的平方都比前后兩項之積少1,每個奇數項的平方都比前后兩項之積多1。

如:第二項1的平方比它的前一項1和它的后一項2的積2少1,第三項2的平方比它的前一項1和它的后一項3的積3多1。

(注:奇數項和偶數項是指項數的奇偶,而并不是指數列的數字本身的奇偶,比如從數列第二項1開始數,第4項5是奇數,但它是偶數項,如果認為5是奇數項,那就誤解題意,怎么都說不通)

證明經計算可得:[f(n)]^2-f(n-1)f(n+1)=(-1)^(n-1)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533958.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533958.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533958.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python3.6安裝ipython_centos6.5下安裝python3.6、pip、ipython

一.先更換系統源為了下載順暢一般都會更改為國內源。1 cd /etc/yum.repos.d/2 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo #下載網易源3 mv CentOS-Base.repo CentOS-Base.repo.ori #備份源4 mv CentOS6-Base-163.repo CentOS-Base.repo #把網易源更改為默認源二…

java 多線程的同步問題_java多線程解決同步問題的幾種方式,原理和代碼

wait()/notify()方法await()/signal()方法BlockingQueue阻塞隊列方法PipedInputStream/PipedOutputStream阻塞隊列的一個簡單實現&#xff1a;public class BlockingQueue {private List queue new LinkedList();private int limit 10;public BlockingQueue(int limit){this…

python期末大作業_大一期末考試很重要,考得好不僅有機會有錢拿,還有機會換專業...

現階段很多高校放寒假的時間已經公布&#xff0c;這也就意味著&#xff0c;大學期末考試即將到來。對于大一新生來說&#xff0c;大學的期末考試是比較新鮮的&#xff0c;因為大家都沒有經歷過。經歷過大學考試的學生&#xff0c;都知道大學的大概學習模式&#xff0c;一般情況…

java http 302重定向_Java 純HTTP請求 禁止302自動重定向

Java 純HTTP Get請求獲取響應內容&#xff0c;如果發生302重定向&#xff0c;繼而模擬請求域獲取重定向后的響應內容。關鍵點&#xff1a;設置conn.setInstanceFollowRedirects為false即可示例代碼public static void main(String[] args) {try {StringBuffer buffer new Stri…

python 且_Pyface庫:一個基于pyqt、pyside、wx且簡化的python的GUI

1 說明&#xff1a;1.1 Pyface庫由大名鼎鼎的enthought出品。1.2 介紹&#xff1a;1.2.1 英文&#xff1a;traits-capable windowing framework.The pyface project contains a toolkit-independent GUI abstraction layer, which is used to support the "visualization&…

java方法的參數類型_Java 基礎 14 方法的重載 與 方法參數類型詳解

1.1 方法重載的概述和特點方法重載概述在同一個類中&#xff0c;允許存在一個以上的同名方法&#xff0c;只要它們的參數個數或者參數類型不同即可。方法重載特點與返回值類型無關&#xff0c;只看方法名和參數列表在調用時&#xff0c;虛擬機通過參數列表的不同來區分同名方法…

crv儀表上的i是什么指示燈_汽車打不著火是怎么回事,儀表盤汽車發動機故障燈亮是什么情況故障指示燈圖解大全集...

如果打不著火&#xff0c;那有可能是起動機壞了&#xff0c;有可能是電池沒電了&#xff0c;有可能是電路出現了問題&#xff0c;還有可能是點火系統出現了問題。汽車發動機的點火系統主要部件是火花塞和點火線圈&#xff0c;火花塞是一個需要定期更換的易損件。如果火花塞長時…

python極簡教程_Python 極簡教程(六)運算符

運算符&#xff0c;我們日常生活中使用的加減乘除&#xff0c;都是運算符的一種。當然這種一般我們稱為算術運算符&#xff0c;用于處理數字運算的。但是在計算機語言中&#xff0c;還有很多的運算符。用于處理不用的情況。主要有以下幾類&#xff1a;算術運算符比較運算符邏輯…

python函數可變長參數_day14 Python函數之可變長參數

函數參數1.形參變量只有在被調用時才分配內存單元&#xff0c;在調用結束時&#xff0c;即刻釋放所分配的內存單元。因此&#xff0c;形參只在函數內部有效。函數調用結束返回主調用函數后則不能再使用該形參變量2.實參可以是常量、變量、表達式、函數等&#xff0c;無論實參是…

ubuntu 安裝java jdk_「ubuntu安裝jdk」Ubuntu安裝jdk8的兩種方式 - seo實驗室

ubuntu安裝jdk安裝方式&#xff1a;1)&#xff1a;通過ppa(源) 方式安裝.2)&#xff1a;通過官網安裝包安裝.JDK官網下載地址一&#xff1a;使用ppa(源)方式安裝&#xff1a;1)&#xff1a;添加ppa源sudo add-apt-repository ppa:webupd8team/javasudo apt-get update2)&#x…

restful風格_什么是RESTful風格的API設計?

隨著移動互聯網的興起&#xff0c;RESTful風格的API設計也隨之流行起來&#xff0c;但我們說了那么多RESTful設計&#xff0c;它到底是什么&#xff1f;本篇文章帶大家來了解一下它的真實面目。RESTful概念首先&#xff0c;我們需要明確的是RESTful&#xff0c;它是一個理念&am…

java jdbc 增刪改封裝_JAVA JDBC 常規增刪改查簡單封裝

JAVA JDBC 常規增刪改查簡單封裝,可滿足大多基本要求作用&#xff1a;1&#xff0c; 查詢列表是直接返回List對象&#xff0c;不必再遍歷&#xff1b;2&#xff0c; 單條查詢直接返回對象&#xff1b;3&#xff0c; 執行sql僅需一個方法搞定&#xff1b;package com.Main.Tools…

python wget安裝_Macbook系統環境安裝wget的2個方法 - 傳統包及Homebrew安裝

考慮到自身項目的拓展需要&#xff0c;朋友建議學習Python爬蟲這樣對于做大數據采集有較大的幫助&#xff0c;老蔣雖然每天也都接觸一些腳本和程序的修改&#xff0c;但是并沒有專業和系統的學習某一項編程。所以還是準備陸續的學習Python語言&#xff0c;無論有沒有基礎&#…

java 程序找錯_java代碼找錯

展開全部你試一下這個行不行&#xff0c;輸入的時候是數字e69da5e6ba903231313335323631343130323136353331333335313138,數字,數字;數字,數字。。。。。的格式&#xff0c;你把我注釋的那個輸入行(String stInput input.next();)的注釋去掉&#xff0c;把我字符串寫死的那行(…

zookeeper 分布式鎖_關于redis分布式鎖,zookeeper分布式鎖原理的一些學習與思考

編輯&#xff1a;業余草來源&#xff1a;https://www.xttblog.com/?p4946首先分布式鎖和我們平常講到的鎖原理基本一樣&#xff0c;目的就是確保&#xff0c;在多個線程并發時&#xff0c;只有一個線程在同一刻操作這個業務或者說方法、變量。在一個進程中&#xff0c;也就是一…

Java線程怎么發送消息_Java客戶端Socket如何能在阻塞線程下收到服務端發送來的消息?...

最近在寫Socket客戶端的時候遇到點問題客戶端在創建時創建了2個線程一個監聽鍵盤輸入事件&#xff0c;使用的是buffered&#xff0c;當檢測到輸入完成時寫入流發送給服務端。String content "";while (!(content bufferedReader.readLine()).equals("exit&quo…

python函數參數傳遞機制_Python 學習筆記(一) 理解Python的函數傳參機制

對于剛接觸Python不久的新手&#xff0c;Python的函數傳參機制往往會讓人迷惑。學過C的同學都知道函數參數可以傳值或者傳地址。比如下面這段代碼點擊(此處)折疊或打開void func(int input) {input 100;}int a 0;func(a);printf("%d", a);結果應該是打印0&#xff…

網頁無法調用java9_JAVA 9 (內部類,異常,包)

內部類&#xff1a;將一個類定義在另一個類里面&#xff0c;稱里面那個類為內部類。舉例&#xff1a;class Zx{public static void main(String []arr){Outer o new Outer();o.method();}}class Outer{class Inner //內部類&#xff0c;可以定義多個內部類{void function(){S…

python renamer模塊_Python - 批量文件重命名

兩個目標兩個&#xff1a;1. 輸入一組文件名&#xff0c;進行批量重命名&#xff1b;2. 輸入一組目錄名&#xff0c;批量重命名各個目錄下的文件。附加功能&#xff1a;1. 可根據文件的創建日期對文件重新排序&#xff1b;2. 重命名方式為遞增數列&#xff0c;可帶前后綴&#…

spark算子_Spark篇之持久化算子

一、前述Spark中控制算子也是懶執行的&#xff0c;需要Action算子觸發才能執行&#xff0c;主要是為了對數據進行緩存。控制算子有三種&#xff0c;cache,persist,checkpoint&#xff0c;以上算子都可以將RDD持久化&#xff0c;持久化的單位是partition。cache和persist都是懶執…