c語言遞歸求差分方程,如何使這個簡單的遞推關系(差分方程)尾遞歸?

@bytebuster的解決方案很好,但他沒有解釋他是如何創建它的,所以它只會幫助解決這個特定的問題。順便說一句,你的公式看起來有點像斐波納契(但不完全),它可以是calculated analytically without any looping(即使沒有循環隱藏在Seq.unfold)。

你開始用下面的函數:

let rec f0 n =

match n with

| 0 | 1 | 2 -> 1

| _ -> f0 (n - 2) + f0 (n - 3)

的函數調用f0的參數n - 2和n - 3,所以我們需要知道這些值。訣竅是使用dynamic programming(可以使用memoization完成),但由于您不想使用memoization,所以我們可以手動編寫它。

我們可以寫f1 n,它返回一個三元組元組,其當前值和兩個過去值為f0。這意味著f1 n = (f0 (n - 2), f0 (n - 1), f0 n):

let rec f1 n =

match n with

| 0 -> (0, 0, 1)

| 1 -> (0, 1, 1)

| 2 -> (1, 1, 1)

| _ ->

// Here we call `f1 (n - 1)` so we get values

// f0 (n - 3), f0 (n - 2), f0 (n - 1)

let fm3, fm2, fm1 = (f1 (n - 1))

(fm2, fm1, fm2 + fm3)

此功能無法尾recurisve,但它只是遞歸調用自己一次,這意味著我們可以使用蓄能器參數的模式:

let f2 n =

let rec loop (fm3, fm2, fm1) n =

match n with

| 2 -> (fm3, fm2, fm1)

| _ -> loop (fm2, fm1, fm2 + fm3) (n - 1)

match n with

| 0 -> (0, 0, 1)

| 1 -> (0, 1, 1)

| n -> loop (1, 1, 1) n

我們需要處理參數0和1專門在fc的主體中。對于任何其他輸入,我們從最初的三個值(即(f0 0, f0 1, f0 2) = (1, 1, 1))開始,然后循環n次執行給定的遞歸步驟,直到達到2為止。遞歸loop函數是@bybbuster的解決方案使用Seq.unfold實現的。

所以,你的函數有一個尾遞歸版本,但只是因為我們可以簡單地將過去的三個值保存在一個元組中。一般來說,如果計算出您需要的先前值的代碼做了更復雜的事情,則這可能不可行。

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

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

相關文章

android text 字體設置,Android TextView個別字體格式設置小結

android 在同一個TextView中如何展現出不同的字體和顏色總結一下1.主要是痛通過String.xml使用html標簽靜態配置然后動態引用Html.fromHtml(getResources().getString(R.string.myHeadStr));2.textView 動態設置//創建一個 SpannableString對象 msp new SpannableString("…

android 圖片合成pdf文件,教你怎么把多張圖片合成一個pdf文件

當你遇到需要把多張圖片合并成一個pdf文件時,你需要怎么做?可能有些朋友會說下載一個pdf格式轉換工具,其實不必這么麻煩,你只要把文件上傳到在線迅捷pdf轉換器,就可以一站式幫你搞定pdf文件的格式轉換以及一些常用的功能操作(如p…

android中的xml布局文件如何引用另一個xml布局文件,引用另一個layout.xml文件而不復制它...

如果我理解正確提問者對XLARGE和SW-600dp的一個布局文件,另一個用于所有的休息。無論如何,當我偶然發現這個問題時,就是這樣。可以通過創建文件夾layout-xlarge和layout-s600dp來解決這個問題,并在每個文件夾中放置一個布局文件&a…

華為系統鴻蒙優勢,華為鴻蒙2.0可以替代安卓嗎,華為鴻蒙2.0優勢在哪

在華為開發者大會上,華為消費業務CEO 余承東,正式發布鴻蒙OS2.0,并宣布華為鴻蒙OS將全面啟用全場景生態,并將于2020年12月發布手機版。余承東還表示,明年,華為的智能手機將全面升級,以支持鴻蒙操…

網頁自動關機代碼HTML,win10系統打開郵件顯示網頁html源代碼如何解決

有不少win10系統用戶在打開郵件的時候,發現內容全是顯示網頁的html源代碼,無法看到內容,遇到這樣的問題該怎么辦呢,通常是自帶的"郵件和日歷"應用暫時不支持查看HTML格式的郵件,下面給大家分享一下具體的解決…

android 界面長按,Android 主界面長按創建快捷方式

Android中創建快捷方式主要有兩種方式。一是在代碼中直接加入生成桌面快捷方式的代碼;二是通過小部件加入;這篇文章主要講另外一種方法!1、通過在AndroidManifest文件里為Activity加入加入之后。長按桌面,小部件中會有你應用的圖標出現&#…

android+fastboot+命令,Android手機fastboot刷機命令

先進入fastboot文件所在目錄連接硬件命令fastboot devices刪除recover、boot,system同理Fastboot erase recovery重刷,boot,system同理Fastboot flash recovery cn170.img只需將boot.img和system.img刷入系統即可完成系統的刷新惡補:FASTBOOT命令有加載驅動 | fastb…

retrofit 2.0 android 教程,初識Retrofit2.0

Retrofit無疑是當下最流行的Android網絡請求框架了,是Square提供的開源產品。官方網站是這樣介紹Retrofit的—-A type-safe HTTP client for Android and Java,為Android平臺的應用提供一個類型安全的HTTP客戶端。Retrofit 是一套注解形式的網絡請求封裝…

怎么創建計算機快捷方式到桌面兩種方法,使用腳本主機創建Windows快捷方式 - Windows Client | Microsoft Docs...

如何使用腳本宿主創建Windows快捷方式12/03/2020本文內容本文介紹如何通過使用 Microsoft Windows Script Host (WSH) Visual FoxPro 創建桌面快捷方式。適用于: Windows 10 - 所有版本,Windows Server 2012 R2原始 KB 編號: 244677摘要WS…

swagger-ui.html 404,解決訪問swagger2報404問題

近來為了項目的接口文檔,而集成了swagger2,但是集成完畢后,訪問swagger-ui.html卻報404,檢查后發現,原來是被攔截了。下面寫一下我的解決方法。首先新建 WebConfig類實現WebMvcConfigurer接口,WebMvcConfig…

正確使用計算機說課稿,《初識計算機》說課稿

說課稿我說課的題目是《初識計算機》首先說教材,我校信息技術課程沒有專用教材,依據柳河縣教師進修學校小學三年級信息技術考核標準,我根據大連理工出版社出版的小學信息技術教材內容進行修改之后,用于我校三年級信息技術課程。本…

小學生學計算機編程的必要,小學生學編程,真的那么重要嗎

原標題:小學生學編程,真的那么重要嗎編程簡單的說就是告訴計算機要做什么。人類需要將解決問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。計算機是迄…

家用計算機機箱怎么選,DIY裝機怎么選擇電腦機箱 新手必讀的電腦主機箱選購指南...

在這個講究顏值的時代,對于一些主要外觀的外觀黨來說,內外皆修的機箱也是算重要的。DIY裝機怎么選擇電腦機箱?下面裝機之家小編就來談下新手必讀的電腦主機箱選購指南,對于裝機選擇機箱困難癥的朋友不妨來看看。一、首先要明白自己…

計算機啟動應用程序的方法,excel的程序_Excel2010中啟動應用程序的三種方法

使用Excel時,需要先啟動應用程序,怎么去進行操作啟動它?今天,學習啦小編就教大家在Excel2010中啟動應用程序的三種方法。Excel2010中啟動應用程序的三種步驟如下:1.開始菜單在桌面上,單擊“開始”,“所有程…

西安工業學院計算機系王翊,西安文理學院藝術學院

“愛的長歌”聲樂教學與實踐匯報音樂會——王翊師生音樂會圓滿結束6月26日我院第八場“愛的長歌”聲樂教學與實踐匯報音樂會—王翊師生音樂會圓滿結束。音樂會受到老師和同學的一致贊譽。整場音樂會高潮迭起,掌聲不斷。音樂會的學生由16級音樂表演專業的聲樂方向的同…

計算機控制系統的穩態誤差,計算機控制系統的穩態誤差.doc

計算機控制系統的穩態誤差計算機控制系統報告--計算機控制系統的穩態誤差在計算機控制系統中存在穩態誤差。怎樣計算穩態誤差呢?在連續系統中,穩態誤差的計算可以通過兩種方法計算:一是建立在拉氏變換中值定理基礎上的計算方法,可…

夢見計算機房,夢見未來家里有機房是什么意思?

吉兇指數:88(由佛滔居士根據數理文化得出,僅供參考)夢見未來,代表的是成就與幸福。夢見未來,通常免征希望,生活將出現轉變。女性夢見未來,表明你是一名很有頭腦的女性。這個夢預示著你將來的生活很富足也很…

計算機如何制作U盤啟動盤,電腦如何制作U盤啟動盤

為什么要制作U盤啟動盤?U盤啟動盤是什么?今天小編和大家普及一下,什么是U盤啟動盤。就是一個簡簡單單的U盤,經過裝機工具軟件就變成了一個裝有PE鏡像文件的U盤,通過這個啟動盤可以進入PE系統對電腦進行重裝系統。話不多…

c 服務器二次驗證碼,V5驗證官網 - 基礎套餐免費 -滑塊驗證,行為驗證,防刷驗證 - 文檔...

平臺對接V5驗證前后端對接流程如下圖所示:前后端調用時序圖對接V5驗證分為業務網站后臺api對接以及業務前端代碼引入兩部分。業務網站后臺獲取驗證Token及驗證服務器(getToken)用于網站后臺定時通過V5控制臺刷新獲取驗證所需要的Token及驗證服務器地址。Token有效期…

戰隊服務器人員位置,和平精英:職業戰隊如何分配成員位置?5大定位劃出5種職位...

#百度APP&百家號杯和平精英#隨著時間的推進,距離百家號杯的決賽越來越近了;一百只精英隊伍你爭我搶都想要爭取冠軍的寶座。在最新的一場循環賽當中SC戰隊以70分的總積分占領榜首,Dae戰隊以69分的總積分緊隨其后排名第二。雖說SC拿到了循環…