遞歸函數(斐波那契數列0,1,1,2,3,5,8,13,21,34,55...)

目錄

一、斐波那契數列(兔子問題)

二、迭代法(用while循環推下一項 )

三、遞歸函數

(函數的定義中調用函數自身的一種函數定義方式)?

四、遞歸函數的底層邏輯推理

(二叉樹推倒最左下節點回退法)


一、斐波那契數列(兔子問題)

學習遞歸函數,分析遞歸流程。
斐波那契是中世紀一個有名的數學家,他在計算之書中提出了一個有趣的:

兔子問題:
# 若一對成年兔子,每個月生下一對小兔子,恰好一雌一雄。
# 在年初時,只有一對小兔子。
# 第1個月結束時,他們成長為成年兔子。
# 第2個月結束時,這對成年兔子,則生下一對小兔子。
# 這種成長與繁殖過程一直持續下去,并假設生下的小兔子不會死,那么一年之后將會有多少只兔子?


# 推算第5個月兔子總數。

#第1個月:1對兔子。
#第2個月:小兔子長大,仍然1對兔子。
#第3個月:這對兔子生了1對小兔子,所以有2對兔子。
#第4個月:老兔子又生了1對兔子,而上個月新出生的兔子還未成熟,所以有3對兔子。
#第5個月:這是已經有2對兔子可以繁殖,于是生了2對兔子。所以有5對兔子。

#第n個月的兔子總數=第n-1個月的兔子總數+第n-2個月的兔子總數

#斐波那契數列(黃金分割):1,1,2,3,5,8,13,21,34,55...
#取出最后得到的兩個數,取出21和34,21÷34約等于0.618,是黃金分割比例。

二、迭代法(用while循環推下一項 )

#用while循環推倒斐波那契數列下一項:
#斐波那切數列:假如這個函數可以生成斐波那切數列第n項:
#例如:0,1,1,2,3,5,8,13,21,34,55...
#fibo(0)=0,fibo(1)=1,fibo(2)=1;
#當fibo(n)時,返回就是斐波那切數列對應的第n項。

def fibo(n):#斐波那切數列的前兩項是:0,1fibo_list=[0,1]##**變量ii=2#讓列表包括斐波那切的所有數字,直到第n項,寫while循環。while i<=n:##每次推導出數列的下一個數值num(第i項第值num,規律)num=fibo_list[i-1]+fibo_list[i-2]# append方法添加到列表的最后fibo_list.append(num)#添加到最后一項循環結束##加1操作i+=1#返回斐波那契額數列第n項return fibo_list[n]#因為數列第0,1項已知,所以添加第2項到數列,變量i
#1.打印第5項
print(fibo(5))
#2.打印0-10項
# for j in range(10):
#???? print(fibo(j))? #打印前10項

#遞歸函數:def funA():
#在函數內部可以調用其他函數,如果一個函數直接或者間接調用函數本身,是遞歸函數

三、遞歸函數

(函數的定義中調用函數自身的一種函數定義方式)?
# f(0)=0
# f(1)=1
# f(2)=1=0+1=f(1)+f(0)
# f(3)=2=1+1=f(2)+f(1)#f(n)=f(n-1)+f(n-2)def fibo(n):if n==0:return 0elif n==1:return 1# if n<2:#???? return nelse:return fibo(n-1)+fibo(n-2)? #函數內調用了這個,所以遞歸for j in range(10):print(fibo(j))

四、遞歸函數的底層邏輯推理

(二叉樹推倒最左下節點回退法)

#定義簡單,邏輯清晰

#過程中發生了什么,樹形圖

def fibo(n):print('fibo:'+str(n))if n<2:return nelse:return fibo(n-1) + fibo(n-2)
print(fibo(3))
#print(fibo(6))

?

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

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

相關文章

光的本質(以暗物質維度粒子為介質的能量傳導)

一、光的概要描述 1、光的本質是能量傳導 空間中均勻分布著暗物質維度粒子。光不是粒子也不是波,而是沒有質量和形態的能量,在臨近暗物質粒子之間的一種能量傳遞。 2、光能傳遞類似牛頓鐘擺(空間中的牛頓鐘擺) 當光能能量騷動一個暗物質粒子后,該暗物質粒…

Open CASCADE學習|管道殼體生成

一、引言 在計算機輔助設計&#xff08;CAD&#xff09;和計算機圖形學領域&#xff0c;OpenCASCADE 是一款功能強大的開源 3D 建模庫。它提供了豐富的幾何和拓撲建模工具&#xff0c;其中管道殼體&#xff08;Pipe Shell&#xff09;生成是其重要功能之一。管道殼體廣泛應用于…

JS正則表達式介紹(JavaScript正則表達式)

文章目錄 JavaScript正則表達式完全指南正則表達式基礎元字符與特殊字符基本元字符. - 點號\d - 數字\D - 非數字\w - 單詞字符\W - 非單詞字符\s - 空白字符\S - 非空白字符 正則表達式標志常用標志詳解g - 全局匹配i - 忽略大小寫m - 多行匹配s - 點號匹配所有字符u - Unicod…

Kubernetes 使用 containerd 實現 GPU 支持及 GPU Operator 部署指南

目錄 Kubernetes 使用 containerd 實現 GPU 支持及 GPU Operator 部署指南 一、為什么 containerd 是趨勢&#xff1f; 二、目標 三、前提條件 四、方式一&#xff1a;containerd nvidia-container-toolkit&#xff08;基礎方式&#xff09; 1?? 安裝 NVIDIA Containe…

leetcode 2918. 數組的最小相等和 中等

給你兩個由正整數和 0 組成的數組 nums1 和 nums2 。 你必須將兩個數組中的 所有 0 替換為 嚴格 正整數&#xff0c;并且滿足兩個數組中所有元素的和 相等 。 返回 最小 相等和 &#xff0c;如果無法使兩數組相等&#xff0c;則返回 -1 。 示例 1&#xff1a; 輸入&#xf…

猿人學第十二題-js入門

1. 鏈接 https://match.yuanrenxue.cn/match/12 2. 抓包分析 2.1. m參數 通過觀察&#xff0c;只有m參數要解決&#xff1a; 3. 逆向分析 3.1. 跟棧 直接跟棧吧&#xff0c;一下就出結果了&#xff1a; 可以看到m其實很簡單&#xff0c;就是固定字符串 當前頁數&#xf…

雙系統電腦中如何把ubuntu裝進外接移動固態硬盤

電腦&#xff1a;win11 ubuntu22.04 實體機 虛擬機&#xff1a;VMware17 鏡像文件&#xff1a;ubuntu-22.04.4-desktop-amd64.iso 或者 ubuntu20.4的鏡像 外接固態硬盤1個 一、首先win11中安裝vmware17 具體安裝方法&#xff0c;網上很多教程 二、磁盤分區 1.在筆…

202535| Kafka架構與重要概念+冪等性+事務

好的&#xff01;以下是關于 Kafka 架構 以及其 重要概念 的詳細介紹&#xff0c;結合 Mermaid 圖形 和 表格&#xff0c;幫助你更好地理解各個概念的關系和作用。 Kafka 架構與重要概念 Kafka 是一個分布式消息系統&#xff0c;廣泛應用于日志收集、流處理、事件驅動架構等場…

從0開始學習大模型--Day05--理解prompt工程

提示詞工程原理 N-gram&#xff1a;通過統計&#xff0c;計算N個詞共同出現的概率&#xff0c;從而預測下一個詞是什么。 深度學習模型&#xff1a;有多層神經網絡組成&#xff0c;可以自動從數據中學習特征&#xff0c;讓模型通過不斷地自我學習不斷成長&#xff0c;直到模型…

Amazing晶焱科技:系統級 EOS 測試方法 - System Level EOS Testing Method

系統上常見的EOS測試端口以AC電源、電話線&#xff08;RJ11&#xff09;、同軸電纜&#xff08;coaxial cable&#xff09;以及以太網絡&#xff08;RJ45&#xff09;最常見&#xff0c;這些端口因有機會布線至戶外的關系&#xff0c;受到EOS/Surge沖擊的幾率也大大提升。因此電…

數據結構—(概述)

目錄 一 數據結構&#xff0c;相關概念 1. 數據結構&#xff1a; 2. 數據(Data): 3. 數據元素(Data Element): 4. 數據項&#xff1a; 5. 數據對象(Data Object): 6. 容器&#xff08;container&#xff09;&#xff1a; 7. 結點&#xff08;Node&#xff09;&#xff…

Vue 兩種導航方式

目錄 一、聲明式導航 二、編程式導航 三、兩句話總結 一、聲明式導航 1. 傳參跳轉&#xff1a; <router-link :to"/user?nameCHEEMS&id114514">Query傳參 </router-link><router-link :to"/user?參數名1參數值1&參數名2參數值2&a…

QTableWidget實現多級表頭、表頭凍結效果

最終效果&#xff1a; 實現思路&#xff1a;如果只用一個表格的話寫起來比較麻煩&#xff0c;可以考慮使用兩個QTableWidget組合&#xff0c;把復雜的表頭一個用QTableWidget顯示&#xff0c;其他內容用另一個QTableWidget。 #include "mainwindow.h" #include &qu…

2025年客運從業資格證備考單選練習題

客運從業資格證備考單選練習題 1、從事道路旅客運輸活動時&#xff0c;應當采取必要措施保證旅客的人身和財產安全&#xff0c;發生緊急情況時&#xff0c;首先應&#xff08; &#xff09;。 A. 搶救財產 B. 搶救傷員 C. 向公司匯報 答案&#xff1a;B 解析&#xff1a;…

python打卡day21

常見的降維算法 知識點回顧&#xff1a; LDA線性判別PCA主成分分析t-sne降維 之前學了特征降維的兩個思路&#xff0c;特征篩選&#xff08;如樹模型重要性、方差篩選&#xff09;和特征組合&#xff08;如SVD/PCA&#xff09;。 現在引入特征降維的另一種分類&#xff1a;無/有…

專業級軟件卸載工具:免費使用,徹底卸載無殘留!

在數字生活節奏日益加快的今天&#xff0c;我們的電腦就像每天都在"吃進"各種軟件。但您是否注意到&#xff0c;那些看似消失的程序其實悄悄留下了大量冗余文件&#xff1f;就像廚房角落里積攢的調味瓶空罐&#xff0c;日積月累就會讓系統變得"消化不良"。…

【Linux】基礎 IO(一)

&#x1f4dd;前言&#xff1a; 這篇文章我們來講講Linux——基礎IO主要包括&#xff1a; 文件基本概念回顧 C文件的操作介紹系統關于文件的基本操作 &#x1f3ac;個人簡介&#xff1a;努力學習ing &#x1f4cb;個人專欄&#xff1a;Linux &#x1f380;CSDN主頁 愚潤求學 …

Java 原生實現代碼沙箱之Java 程序安全控制(OJ判題系統第2期)——設計思路、實現步驟、代碼實現

在看這一期之前&#xff0c;需要先看上一期的文章&#xff1a; Java 原生實現代碼沙箱&#xff08;OJ判題系統第1期&#xff09;——設計思路、實現步驟、代碼實現-CSDN博客 Java 程序可能出現的異常情況 1、執行超時 占用時間資源&#xff0c;導致程序卡死&#xff0c;不釋…

常見的降維算法

作業&#xff1a; 自由作業&#xff1a;探索下什么時候用到降維&#xff1f;降維的主要應用&#xff1f;或者讓ai給你出題&#xff0c;群里的同學互相學習下。可以考慮對比下在某些特定數據集上t-sne的可視化和pca可視化的區別。 一、什么時候用到降維&#xff1f; 降維通常…

理解Yocto項目中`${D}`作為模擬目標系統根文件結構的臨時目錄

在Yocto項目中,理解${D}作為模擬目標系統根文件結構的臨時目錄,可以通過以下具象化的比喻和結構解析來把握其核心邏輯: 一、沙盒模型:構建系統的“實驗場地” ${D}的作用類似于建筑師在施工前搭建的1:1實體模型。它完全模仿目標設備的文件系統布局(如/usr/bin、/etc等目錄…