誰能給講一下遞迴

2022-11-28 08:05:14 字數 1224 閱讀 6538

1樓:書單品鑑

遞迴是一種重要的程式設計技術。該方法用於讓一個函式從其內部呼叫其自身。一個示例就是計算階乘。

0 的階乘被特別地定義為 1。 更大數的階乘是通過計算 1 * 2 * ...來求得的,每次增加 1,直至達到要計算其階乘的那個數。

下面的段落是用文字定義的計算階乘的一個函式。

「如果這個數小於零,則拒絕接收。如果不是一個整數,則將其向下舍入為相鄰的整數。如果這個數為 0,則其階乘為 1。如果這個數大於 0,則將其與相鄰較小的數的階乘相乘。」

要計算任何大於 0 的數的階乘,至少需要計算一個其他數的階乘。用來實現這個功能的函式就是已經位於其中的函式;該函式在執行當前的這個數之前,必須呼叫它本身來計算相鄰的較小數的階乘。這就是一個遞迴示例。

遞迴和迭代(迴圈)是密切相關的 — 能用遞迴處理的演算法也都可以採用迭代,反之亦然。確定的演算法通常可以用幾種方法實現,您只需選擇最自然貼切的方法,或者您覺得用起來最輕鬆的一種即可。

顯然,這樣有可能會出現問題。可以很容易地建立一個遞迴函式,但該函式不能得到一個確定的結果,並且不能達到一個終點。這樣的遞迴將導致計算機執行一個「無限」迴圈。

下面就是一個示例:在計算階乘的文字描述中遺漏了第一條規則(對負數的處理) ,並試圖計算任何負數的階乘。這將導致失敗,因為按順序計算 -24 的階乘時,首先不得不計算 -25 的階乘;然而這樣又不得不計算 -26 的階乘;如此繼續。

很明顯,這樣永遠也不會到達一個終止點。

因此在設計遞迴函式時應特別仔細。如果懷疑其中存在著無限遞迴的可能,則可以讓該函式記錄它呼叫自身的次數。如果該函式呼叫自身的次數太多,即使您已決定了它應呼叫多少次,就自動退出。

下面仍然是階乘函式,這次是用 jscript **編寫的。

// 計算階乘的函式。如果傳遞了

// 無效的數值(例如小於零),

// 將返回 -1,表明發生了錯誤。若數值有效,

// 把數值轉換為最相近的整數,並

// 返回階乘。

function factorial(anumber)

if (anumber == 0)

else return (anumber * factorial(anumber - 1)); // 否則,遞迴直至完成。}

2樓:匿名使用者

簡單的說就是

在遞迴函式裡首先要給出結束函式的條件和返回值(以便在下次呼叫函式時判斷是否結束遞迴).

然後就是函式在通過呼叫自身函式來解決問題的方法.

誰能解釋下「獨立主格」,誰能給我講一下英語中獨立主格結構

一 獨立主格結構的構成 名詞 代詞 現在分詞 過去分詞 名詞 代詞 形容詞 名詞 代詞 副詞 名詞 代詞 不定式 名詞 代詞 介詞短語構成。二 獨立主格結構的特點 1 獨立主格結構的邏輯主語與句子的主語不同,它獨立存在。2 名詞或代詞與後面的分詞,形容詞,副詞,不定 式,介詞等是主謂關係。3 獨立主...

誰能給我翻譯一下

我是如此悲哀以致於你已經說的那些話是如此直接和諷刺。某些事情不能從我的心裡擦掉。我為今天的不幸抱歉。並且如果我們再也沒有關係,我不能接受我們繼續是普通朋友。我會停止愛你並且憎惡你一些天。再見 我對你所說的那些非常直接和諷刺性的話感到傷心。一些事情在我腦海中無法擦除。我對昨天的不開心深感抱歉。我不能接...

誰能給翻譯一下這是什麼意思,誰能給我翻譯一下這是什麼意思?

登陸失敗,點選藍字 兩個字的那個籃字 可以確認服務狀態後重新整理重試 如果服務正常請點選客服中心 四個字的籃字 諮詢 誰能給我翻譯一下這是什麼意思?愛你,理由很簡單,你漂亮,和你 是我全部想做的事。愛你,不只是美夢成回真,我所做答的每一件事都是出於對你的愛?字面意思是 已經出離了愛你 沒有人可你讓我...