演算法老師給我們布置的兩道題拖了幾天了,今天決定搞定它們。
其中有一道就是:
計算ackermann函式ack(m,n)的遞迴計算函式。 對於m>=0,n>=0,ack(m,n)定義為:
ack(0,n)=n+1;
ack(m,0)=ack(m-1,1);
ack(m,n)=ack(m-1,ack(m,n-1))
對著題目看了半天,都不明白這個遞迴究竟是什麼意思,也沒在意,就寫了程式直接執行:
#include
using namespace std;
unsigned int ack(unsigned int m,unsigned int n)
int main()
{unsigned int m,n;
cin>>m>>n;
cout《隨手輸入了幾組m,n居然發現有很多次電腦都比較長時間沒反應。按說我寫的遞迴沒什麼問題啊,於是就谷歌了下ackermann,結果……目瞪口呆,心服口服。原來這是歷史上乙個著名的遞迴函式!具體的資料大家可以到去看,懶得看英文的看那幾個**就行了!
令我吃驚的資料:
ack(4,2)=2的65536次方-3 這個,我估計得算相當久,也不知道用什麼型別來存結果最適合,放棄……
一句感嘆:它膨脹得太快了,是我有眼不識泰山!
Ackermann函式的個人理解
最近又從頭看起 sicp 其中一道練習 1.10 裡提到了ackermann函式,但定義似乎有些不同。lang scheme define a x y cond y 0 0 x 0 2 y y 1 2 else a x 1 a x y 1 lisp括號真的多 簡單來說就是乙個函式a x,y y 0時...
Ackermann函式的遞迴與非遞迴演算法
折騰了我將近一周了,沒查到能實際應用的程式 只好自己魔改 ifndef pch h define pch h 科普 阿克曼函式 ackermann 0,n n 1 ackermann 1,n n 2 ackermann 2,n 2 n 3 ackermann 3,n 2 n 3 3 include ...
強大的sscanf函式
int sscanf const char buffer,const char format,argument buffer 儲存的資料 format 格式控制字串。argument 可選自變數 sscanf sscanf與scanf類似,都是用於輸入的,只是後者以鍵盤 stdin 為輸入源,前者以...