函式遞迴(待續)

2021-08-29 02:00:33 字數 793 閱讀 9849

遞迴的呼叫過程?

什麼情況下適合用遞迴/什麼情況下不適合?

遞迴在特定的程式設計(如人工智慧)中是一種重要的工具。

void recurs(argumentlist)

/*遞迴呼叫將產生一系列有趣的事件。只要if語句為true,每個recurs()呼叫都將執行statements1,然後呼叫recurs(),而不會執行statements2.當if語句為false時,當前呼叫將執行statements2.當前呼叫結束後,程式控制權將返回給呼叫它的recurs(),而該recurs()將執行其statements2部分,然後結束,並將控制權返回給前乙個呼叫,以此類推。因此,如果recurs()進行了5次遞迴呼叫, 則第乙個statements1部分將按函式呼叫的順序執行5次,然後statements2部分將以與函式呼叫相反的順序執行5次。進入5層遞迴後, 程式將沿進入的路徑返回。

// recur.cpp – using recursion

#include

void countdown(int n);

int main()

void countdown (int n)

下面是該程式的輸出:

counting down … 4

counting down … 3

counting down … 2

counting down … 1

counting down … 0

0: kaboom!

1: kaboom!

2: kaboom!

3: kaboom!

4; kaboom!

遞迴與分治 待續

直接或者間接呼叫自身的演算法成為遞迴演算法,用函式自身給出定義的函式稱為遞迴函式。分治法的設計思想是 把乙個難以解決的大問題,分割成多個規模較小的相同問題,以便各個擊破,分而治之。其中子問題不可以重疊,否則一般使用動態規劃的思想。分治主要步驟為 分割 常使用均分 n 2 或者偏分 n 1 的思想 遞...

遞迴程式(未完待續)

一 求n的m次方。程式分析 1 如果m的值為0,則輸出為1。2 如果不為0,則n n m 1 include int j int n,int m void main int j int n,int m 2 若一頭小牛,從出生起,第四年開始,每一年生一頭母牛,問第n年有多少頭母牛。程式說明 f 1 1...

oracle提供的有用函式 待續

decode函式 decode是oracle公司獨家提供的功能,它是乙個功能很強的函式。它雖然不是sql的 標準,但對於效能非常有用。到目前,其他的資料庫 商還不能提供類似decode的功能,甚至有的資料庫的 商批評oracle的sql不標準。實際 上,這種批評有些片面或不夠水平。就象有些馬車製造商...