C語言----斐波那契數列

? ? ? 各位看官們好,當我寫了上一篇博客楊輝三角后,有一些看官叫我講一下斐波那契數列。對于這個大家應該是有了解的。最簡單的規律就是f(n)=f(n-2)+f(n-1)。就是當前是前兩項之和,然后下標1和0都是1.從第三項開始計算的。那么我們知道規律,那么我們就直接來講講如何實現和實現方法有哪些吧。

遞歸

? ? ? ? 我想大家學習C語言到現在應該看到斐波那契數列應該想到的是遞歸吧。我想遞歸大家應該還知道它的核心思想吧,就是每遞歸一次,那么這個問題就要越靠近我們想要的答案一次,一直遞歸到想要答案就返回。好,那么我們現在想一想怎么搞。那么我們知道我們有特殊情況就是,如果我輸入1和2的話,那么我們得到的值是1.那么我們這個就可以直接寫出來哇。好當我們寫出了特殊情況后,我們來思考正常情況。那么我們也知道我們規律就是前兩項之和。那么我們就直接寫啊,是不是。大家思考一下:

? ? ? ? 我們只要不是特殊情況的話,我們只需要在遞歸的時候將前兩項傳來,直到設定的值,那么我們就可以得到結果了。大家思考一次,是吧。代碼很簡單,但是有一個問題就是。遞歸的內存占用太多了。很有可能造成棧溢出。也許大家輸入前面的數字編譯器還是很快的輸出的。但是當我們輸入較大值如100這類的我們就可以明顯的感覺速度很慢了。所以遞歸大家可以知道這個方法但是使用起來限制還是很大了。大家知道有這個辦法就可以了。

for循環

? ? ? okok,當我們寫了遞歸后,我們遞歸其實還是有點難度的,畢竟我們還是需要思考一下,怎么實現的吧。但是我們要是用for循環的,我們從最開始學習C語言的時候我們就知道有個for循環。那么最基礎的知識其實是很有作用的,那么我們來思考一下for循環如何來實現我們的斐波那契數吧。但其實for循環也是比較簡單的,畢竟大家思考一下。我們最基本的規律就是前兩項之和f3,那么我們就創建三個變量吧。一個作為最后的相加項我們最后返回的。然后另外兩個就一個作為前一項f1一個作為前兩項f2。那么這個如何交換值值嘞。首先我們就最開始的時候考慮特殊情況。1和2的時候那么我們就直接從2開始吧,如果我輸入的值是1或者2的話,for本來就等于2了,不執行,然后直接返回f3。那么我們可以確定了f3的初始值為1吧。并且我們現在把特殊情況也處理了。那我們正常的話f3=f1+f2。然后f2=f3。這個是為什么嘞,因為我們大家算f3,是不是就是我們的前一個f3加一個f2但我不能直接寫f3的前一項啊。所以f2就成為上一個f3吧。那f2成為上一個f3那。f1自然而然的變成了上一個的f2了吧。這樣大家是不是就通透了呀。我們將f1,2,3全部設為1.然后for循環從2開始那么就排除了特殊情況。然后最開始就將f3更新,然后f2和f1相繼跟新這樣如果下次沒有更新的話,我們就可以直接確定了返回值f3了。

? ? ? ? 大家需要注意一下啊。就是f1與f2更新的順序不要亂哦。不然的話f1也變成上一個f3了。然后就太多的麻煩了。

數組

? ? ? ? OK呀,其實講了上面的兩個方法就差不多了的,但是我還想到了一個方法,就是我們使用數組來實現這個。那大家先想一想數組如何實現這個了。但其實啊。也很簡單與我們的for循環是差不多的。我們上一個for循環是需要實時更新的,但我們數組其實就是很簡單的。我們創建一個較大的數組。然后沒循環一次,那么就往數組里寫入新的值,然后循環到設定值結束,那么就返回這個數組下標的的元素就可以了。那么簡單的思路那我們就直接開始搞吧。

? ? ? ? 大家看看上面咦。為什么我們創建數組的時候開始要給0,1,1的值啊。其實也很簡單就是我們數組下標啊。我們原本計算的都是從1開始的,但是我們數組是下標如果不設置得話,那么下標0為1,設置的值就會大很多,當然是越向后值就比正確值大很多。大家可以下來嘗試一下。

? ? ? 好了,那么我們上面三種方法就差不多了,遞歸方法雖然有,但是可以處理小部分遞歸次數較小的,如果太大了。那么就是會很慢甚至報錯。建議少用用for循環的方法也可以。好了。以上就是本篇博客的內容了。如果還有補充的話,希望大家可以評論區留言。

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

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

相關文章

選購洗地機有哪些技巧?2024洗地機全面解析,618洗地機綜合對比

洗地機作為人們生活中智能清潔工具的代表,它自帶清/污水箱,不用手洗滾刷,既可以吸塵也可以自動識別并清洗地板上的干濕垃圾和頑固污漬,它以多功能一體化的設計改善了家務清潔的效率和體驗。那么如何在眾多洗地機品牌中&#xff0c…

C#實現簡單音樂文件解析播放——Windows程序設計作業2

1. 作業內容 編寫一個C#程序,要求實現常見音樂文件的播放功能,具體要求如下: ????1). 播放MP3文件: 程序應能夠讀取MP3文件,并播放其中的音頻。 ????2). 播放OGG文件: 應能夠播放ogg文件。 ????…

阿里云Redis創建使用

說明:本文介紹如何使用阿里云Redis,包括開通、連接、使用; 開通 進入官網Redis產品頁,點擊免費試用(白嫖); 選擇中間這個,云數據庫Redis版; 開通完成后,可在…

如何在Java項目中使用Spring Boot快速連接達夢數據庫(DM)

前言 在Java開發領域,Spring Boot憑借其簡潔快速的特性成為現代應用開發的首選框架。本文將詳細介紹如何在Spring Boot項目中整合JDBC以快速連接達夢數據庫(DM),并提供一個簡單的示例來驗證連接是否成功。 一、環境準備與依賴配置 在開始之前&#xf…

零代碼平臺助力中國石化江蘇油田實現高效評價體系

概述: 中國石化集團江蘇石油勘探局有限公司面臨著評價體系依賴人工處理數據、計算繁瑣且容易出錯的挑戰。為解決這一問題,他們決定借助零代碼平臺明道云開發江蘇油田高質量發展經濟指標評價系統。該系統旨在實現原始數據批量導入與在線管理、權重及評分…

QT設計模式:建造者模式

基本概念 建造者模式是一種創建型設計模式,它允許你創建復雜對象的過程獨立于該對象的組成部分以及它們的組裝方式。這樣可以構造出不同的對象表示。 在建造者模式中,將創建對象的過程和對象的表示分離,通過一步步的構建,可以得…

FFmpeg常用API與示例(四)——過濾器實戰

1.filter 在多媒體處理中,filter 的意思是被編碼到輸出文件之前用來修改輸入文件內容的一個軟件工具。如:視頻翻轉,旋轉,縮放等。 語法:[input_link_label1]… filter_nameparameters [output_link_label1]… 1、視…

C++中調用python函數(VS2017+WIN10+Anaconda虛擬環境)

1.利用VS創建C空項目 step1 文件——新建——項目 step2 Visual C—— Windows桌面——Windows桌面向導 step3 選擇空項目 step4 源文件——新建項——添加 step5 Visual C——C文件(.cpp) 2.配置環境 Step1. 更換成Release與X64 Step2. 打開項目屬性&…

文本提取新技能:學會按行數批量提取,輕松應對各種需求

在數字化時代,文本處理成為我們日常生活和工作中不可或缺的一部分。無論是從網頁、文檔還是數據庫中提取信息,文本提取技能都顯得尤為重要。而按行數批量提取文本內容,更是文本處理中的一項高效且實用的技能。本文將介紹辦公提效工具如何按行…

在Spring Boot應用安裝SSL證書

目錄 前提條件 步驟一:下載SSL證書 步驟二:在Spring Boot安裝SSL證書 步驟三:驗證SSL證書是否安裝成功 前提條件 已通過數字證書管理服務控制臺簽發證書SSL證書綁定的域名已完成DNS解析,即您的域名與主機IP地址相互映射已在W…

ASP.NET學生信息管理系統

摘 要 本文介紹了在ASP.net環境下采用“自上而下地總體規劃,自下而上地應用開發”的策略開發一個管理信息系統的過程。通過分析某一學校學生管理的不足,創建了一套行之有效的計算機管理學生的方案。文章介紹了學生管理信息系統的系統分析部分&#xff0c…

微信投票源碼系統至尊版 吸粉變現功能二合一

源碼簡介 微信投票系統在營銷和社交互動中發揮著多方面的作用,它能夠提升用戶的參與度和品牌曝光度,還是一種有效的數據收集、營銷推廣和民主決策工具。 分享一款微信投票源碼系統至尊版,集吸粉變現功能二合一,全網獨家支持禮物…

已經安裝tensorflow,仍報錯No module named ‘tensorflow‘

在安裝某些python虛擬環境的教程文章中,經常看到有評論區說安裝了但是調用顯示無模塊,例如pytorch和tensorflow等等。 其實跟之前我寫過的一篇文章解決方法類似,就是python項目中需要應用哪個虛擬環境,這個項目的python解釋器就選…

企業網絡需求及適合的解決方案

近年來,企業網絡通信需求可謂五花八門,變幻莫測。它不僅為企業的生產、辦公、研發、銷售提供全面賦能,同時也讓企業業務規模變大成為了可能。 在當前的技術格局下,中大型企業常見的技術方案有很多,而同時也有各自不可替…

商務英語口語成人考級外語培訓之BECkao考級口語篇

在口語考試中,不管實際內容你能說出多少,但準備一些套話,至少還能撐撐場子你們說是不是? 內容闡述 描述事實 1.Im going to describe/present/explain/give you some information about... 2.Id like to say a few words about...…

德國儲能項目鋰電池儲能集裝箱突發火災:安全挑戰再引關注

2024年4月27日,德國尼爾莫爾商業區的一起鋰電池儲能集裝箱火災事件引起了全球關注。這起事故不僅導致兩名消防員在救援過程中受傷,更暴露了儲能系統在安全領域亟待解決的重要問題。 根據德國消防隊的出警記錄,火災發生在晚上9點前不久。消防人…

機器學習算法應用——神經網絡回歸任務、神經網絡分類任務

神經網絡回歸任務(4-3) 神經網絡回歸任務,通常指的是使用神經網絡模型進行回歸分析。回歸分析是一種統計學方法,用于研究一個或多個自變量(預測變量)與一個因變量(響應變量)之間的關…

漲薪技術 —— 搞定Appium工作中常見應用操作!

前言 Appium 是一個開源、跨平臺的自動化測試工具,用于測試原生和輕量移動應用,支持 iOS, Android 和 FirefoxOS 平臺。此工具在測試工作中也較長用到,接下來給大家介紹日常中的操作。 1、應用操作 1.1獲取應用的包名和界面名 當我們從一…

日報表定時任務優化歷程

報表需求背景 報表是一個很常見的需求,在項目中后期往往會需要加多種維度的一些統計信息,今天就來談談上線近10個月后的一次報表優化優化之路(從一天報表跑需要五分鐘,優化至秒級) 需求:對代理商進行日統計…

基礎I/O:文件系統調用接口

文章目錄 文件系統調用接口open系統調用接口和C語言封裝文件描述符fd重定向 文件系統調用接口 open NAME//打開、創建 - 打開并可能創建文件或設備open, creat - open and possibly create a file or deviceSYNOPSIS#include <sys/types.h>#include <sys/stat.h>…