C#繪制斐波那契螺旋

Fabonacci 數列,也就是”兔子數列“,

如果第一項為0的話,就是,

0,1,1,2,3,5,8,13,21,34,55,89……

第一項不是0也可以,

1,1,2,3,5,8,13,21,34,55,89……

它是一個無限長數列。

它的特點是,除了前兩項0和1之外,或者不考慮0,除了前兩項1和1之外,后面的每一項都是其前兩項的和。其通項形式為,F[n]=F[n-1]+F[n-2](n>=2,F[0]=1,F[1]=1)

百度百科上是這么寫的:

在數學歷史上,歐洲黑暗時期過后,第一位有影響的數學家是斐波那契(L.Fibonacci,1170一1250)。他早年就隨其父在北非師從阿拉伯人學習算學,后又游歷地中海沿岸諸國,回意大利后寫成《算經》,也翻譯成《算盤書》。這部很有名的著作主要是一些源自古代中國、印度和希臘的數學問題的匯集,內容涉及整數和分數算法、開方法、二次和三次方程以及不定方程。特別是,在1228年的《算經》修訂版上載有如下“兔子問題”:?

“斐波那契數列”是什么?用筆畫出松果的走向,有趣的現象發生了

如果每對兔子(一雄一雌)每月能生殖一對小兔子(也是一雄一雌,下同),每對兔子第一個月沒有生殖能力,但從第二個月以后便能每月生一對小兔子.假定這些兔子都沒有死亡現象,那么從第一對剛出生的兔子開始,12 個月以后會有多少對兔子呢? 解釋說明為:一個月:只有一對兔子;第二個月:仍然只有一對兔子;第三個月:這對兔子生了一對小兔子, 共有 1+1=2 對兔子.第四個月:最初的一對兔子又生一對兔 子,共有 2+1=3 對兔子.則由第一個月到第十二個月兔子的 對數分別是,0,1,1,2,3,5,8,13,21,34,55,89,144, ……,后人為了紀念提出兔子繁殖問題的斐波納契, 將這個兔子數列稱為斐波那契數列, 即把,0,1,1,2,3,5,8,13,21,34……這樣的數列稱為斐波那契數列。?

這里需要特別注意的是,數列中每一項的數值的單位是“對”也就是“一雄一雌”兩只兔子,而不是一只兔子。這一點特別容易被忽視。

隨著數列長度的增加,前后兩項的比越來越接近于黃金分割率0.618034的倒數1.618034.

這個倒數是方程,

x(x-1)=0

的正根,負根的絕對值為黃金分割率。

C#上有一個很好用的繪圖庫,Nakov.TurtleGraphics。

它其實就是C#版本的Turtle(Python),也就是早年的LOGO語言的海龜繪圖。

這件事其實就是為了畫出直角轉彎的斐波那契數列,而不是為了介紹繪圖工具。

    private void ButtonDraw_Click(object sender, EventArgs e){// Assign a delay to visualize the drawing processTurtle.Delay = 0;Turtle.PenSize = 4;Turtle.ShowTurtle = false;// Draw a equilateral triangleTurtle.PenColor = Color.Green;Turtle.PenUp();Turtle.Forward(160);Turtle.Rotate(90);Turtle.Forward(160);Turtle.Rotate(-90);Turtle.PenDown();int length;int an_1 = 1, an_2 = 0;for (int i = 0; i < 16; i++){length = an_1 + an_2;Turtle.Forward(length);Turtle.Rotate(90);//Debug.WriteLine(length);an_1 = an_2;an_2 = length;}}

Github:?https://github.com/yyl-20020115/TurtleGraphics.NET.git?

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

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

相關文章

JavaScript 任務 - clearTimeout 函數與 clearInterval 函數

clearTimeout 函數 1、基本介紹 clearTimeout 函數用于取消先前通過 setTimeout 函數設置的定時器 clearTimeout(【timeoutID】)參數說明timeoutID要取消的定時器的標識符&#xff0c;這個 ID 是由 setTimeout 函數返回的2、演示 let timeoutId1 setTimeout(() > {console.…

在 CentOS 7 中使用 systemd 創建自定義服務

systemd 創建自定義服務簡述創建自定義服務步驟文件覆蓋優先級創建服務流程在 /etc/systemd/system/ 目錄下創建 .service 文件&#xff08;需 root 權限&#xff09;&#xff1a;編寫服務配置模板Systemd 服務文件三大區塊詳解[Unit] 區塊 - 服務元數據與依賴[Service] 區塊 -…

【QT】printsupport庫遠程實現打印機打印

【QT】printsupport庫遠程實現打印機打印 前言 思路 實現 當前所有可用打印機瀏覽 打印預覽 打印輸出 手動選擇打印 自動打印 防呆補充 庫打包 前言 在打印機的通訊控制方式中,有USB、網口、串口、WIFI等,針對局域網環境下,用自研軟件控制打印機打印的應用場景,針對自研軟…

LT3045EDD#TRPBF ADI亞德諾 超低噪聲LDO穩壓器 電子元器件IC

LT3045EDD#TRPBF ADI 超低噪聲LDO穩壓器專業解析1. 產品技術檔案LT3045EDD#TRPBF是ADI&#xff08;Analog Devices Inc.&#xff09;推出的超低噪聲/超高PSRR線性穩壓器&#xff0c;采用DFN-12 (3x3mm)封裝&#xff0c;以其0.8μVRMS超低噪聲和79dB超高頻PSRR成為精密電源設計。…

易語言模擬真人鼠標軌跡算法 - 非貝塞爾曲線

一.簡介 鼠標軌跡算法是一種模擬人類鼠標操作的程序&#xff0c;它能夠模擬出自然而真實的鼠標移動路徑。 鼠標軌跡算法的底層實現采用C/C語言&#xff0c;原因在于C/C提供了高性能的執行能力和直接訪問操作系統底層資源的能力。 鼠標軌跡算法具有以下優勢&#xff1a; 模擬人…

Spring Boot 3 數據源連接信息存儲方法

在Spring Boot 3中&#xff0c;數據源連接信息的存儲方式主要有以下幾種&#xff0c;根據安全性和環境需求選擇合適的方式&#xff1a; 1. 配置文件&#xff08;推薦基礎方式&#xff09; 位置&#xff1a;src/main/resources/application.properties 或 application.yml 示例…

按鍵序列常用示例

按鍵序列常用示例 按鍵編碼 基礎按鍵對應編碼 A-Z 原字符即可 KeyCodeSHIFTCTRL^ALT% 其他按鍵 KeyCodeBACKSPACE{BACKSPACE}, {BS}, or {BKSP}BREAK{BREAK}CAPS LOCK{CAPSLOCK}DEL or DELETE{DELETE} or {DEL}DOWN ARROW{DOWN}END{END}ENTER{ENTER} or ~ESC{ESC}HELP{HEL…

【LeetCode Solutions】LeetCode 熱題 100 題解(36 ~ 40)

CONTENTS二叉樹 - LeetCode 94. 二叉樹的中序遍歷&#xff08;簡單&#xff09;二叉樹 - LeetCode 104. 二叉樹的最大深度&#xff08;簡單&#xff09;二叉樹 - LeetCode 226. 翻轉二叉樹&#xff08;簡單&#xff09;二叉樹 - LeetCode 101. 對稱二叉樹&#xff08;簡單&…

數據處理分析環境搭建+Numpy使用教程

環境搭建 數據分析常用開源庫 Numpy NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫。是一個運行速度非常快的數學庫&#xff0c;主要用于數組計算包含&#xff1a; 一個強大的N維數組對象 ndarray廣播功能函數整合 C/C/Fortran 代碼的工具線性代數、傅里葉變換、隨機…

實戰多屏Wallpaper壁紙顯示及出現黑屏問題bug分析-學員作業

背景&#xff1a; 在大家看了上一篇google官方對于多屏壁紙這塊的介紹后 安卓Wallpaper壁紙部分對多屏的支持-Google官方文檔介紹 可能還是對于壁紙支持多屏這塊沒有相關的實戰性的認知&#xff0c;所以本文就開始帶大家來進行部分解讀和實戰。 壁紙多屏顯示原理文檔解讀&a…

Vue插槽---slot詳解

1、什么是 Vue 插槽&#xff1f;Vue 插槽&#xff08;Slot&#xff09;?? 是 Vue 提供的一種非常強大且靈活的機制&#xff0c;用于實現&#xff1a;父組件向子組件傳遞一段模板內容&#xff08;HTML / 組件等&#xff09;&#xff0c;讓子組件在指定位置動態渲染這些內容。可…

STM32 - Embedded IDE - GCC - 顯著減少固件的體積

導言如上圖所示&#xff0c;在編譯器附加選項&#xff08;全局&#xff09;里添加--specsnano.specs&#xff0c;告訴編譯器使用newlib-nano替代newlib去編譯代碼。 newlib vs. newlib-nano newlib 是 GNU ARM 工具鏈默認的 C 標準庫&#xff0c;功能完整&#xff0c;但體積較大…

python的美食交流社區系統

前端開發框架:vue.js 數據庫 mysql 版本不限 后端語言框架支持&#xff1a; 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 數據庫工具&#xff1a;Navicat/SQLyog等都可以 摘要&…

《Redis持久化機制對比與RDB/AOF調優方案》

&#x1f4da; Redis持久化機制對比與RDB/AOF調優方案 &#x1f9e0;前言 在生產環境中&#xff0c;Redis 常常被用作緩存&#xff0c;但在更多場景下&#xff0c;它還存儲著核心業務數據&#xff08;如會話、訂單、隊列任務等&#xff09;。一旦 Redis 宕機、數據丟失&#…

eXtremeDB 醫療設備開發實戰:從合規到實時,構建 EN62304 級數據管理系統

在醫療設備開發領域&#xff0c;數據管理的 “可靠性” 與 “合規性” 是不可逾越的紅線 —— 監護儀心率數據的丟失可能延誤診斷時機&#xff0c;胰島素泵劑量記錄的錯誤則直接威脅患者生命安全。eXtremeDB 憑借對 EN62304 標準的深度合規支持、硬實時數據處理能力及多層次安全…

linux 設備驅動的分層思想

一、 概述像這樣的分層設計在linux的input、RTC、MTD、I2c、SPI、tty、USB等諸多類型設備驅動中屢見不鮮,下面對這些驅動進行詳細的分析。二、 輸入設備驅動輸入設備&#xff08;如按鍵、鍵盤、觸摸屏、鼠標等&#xff09;是典型的字符設備&#xff0c;其一般的工…

【嵌入式硬件實例】-555定時器驅動直流無刷電機

555定時器驅動直流無刷電機 文章目錄 555定時器驅動直流無刷電機 1、555定時器介紹 2、BLDC,無刷直流電機 3、DRV10866 驅動器 4、硬件準備與接線 5、電路工作原理 在這個項目中,我們將使用 555 定時器 IC 和 DRV10866 驅動器 IC 制作 BLDC、無刷直流電機驅動電路。無刷電機可…

Helm 常用命令 + Bitnami 中間件部署速查表

文章目錄一、Helm 常用命令速查表1.1. 倉庫管理1.2. Chart 搜索1.3. 應用部署1.4. 應用管理二、Bitnami 常用中間件部署示例三、常用自定義參數&#xff08;values.yaml 配置項&#xff09;四、安裝后的訪問方式五、一鍵安裝腳本 install-middleware.sh5.1. 完整腳本5.2. 使用方…

Ansible 自動化運維實戰系列(六):Valut詳解

Ansible 自動化運維實戰系列&#xff08;六&#xff09;&#xff1a;Valut詳解&#x1f4da; 系列導航一&#xff1a;概述二&#xff1a;命令1&#xff09;創建加密文件2&#xff09;加密已有文件3&#xff09;查看加密文件4&#xff09;編輯加密文件5&#xff09;解密文件6&am…

《探秘瀏覽器Web Bluetooth API設備發現流程》

網頁若需與藍牙設備通信,往往需依賴本地客戶端或專用驅動程序作為中介,不僅增加了用戶操作成本,也限制了Web應用在跨設備場景中的拓展。而Web Bluetooth API的出現,直接賦予了網頁與低功耗藍牙(BLE)設備對話的能力,從智能手環的健康數據同步,到智能家居設備的遠程控制,…