1樓:匿名使用者
兩個問題:
1、integer太小了,資料早就爆了;
2、棧的呼叫過頭了,「exitcode = 201」的意思就是棧溢位。
事實上,阿克曼函式的值是極大的。
ackermann(0,n)=n+1
ackermann(1,n)=n+2
ackermann(2,n)=2*n+3
ackermann(3,n)=2^(n+3)-3ackermann(4,n)=2^2^2^……^2-3,乘冪中共有n+3個2。
當m≥4,ackermann函式的增長快得驚人。ackermann(4,0)=13,ackermann(4,1)=65533,ackermann(4,2)=2^65536-3有19729位,而ackermann(4,3)則即使是位數也不易估計。ackermann(5,0)=65533,ackermann(5,1)=ackermann(4,65533)……
針對於小資料,你的程式沒問題。
2樓:破天一彈
lz 把 integer 換成 int64 再試試。。再不行就麻煩點用高精度
3樓:匿名使用者
把integer換成longint, int64,再不行就只好用高精度了
函式遞迴問題,函式遞迴問題
有用。遞迴的概念尤其是在程式設計領域很實用,舉個簡單的例子 比如你要搜尋某個路徑下面所有的 或者 檔案,那麼你就要用到遞迴,因為你搜尋的路徑下面既有資料夾又有檔案。比如搜某個資料夾下面的檔案函式為searchfile string path 那麼在這個函式實現裡面遇到新的資料夾,就得再次呼叫函式se...
pascal行內函數如何使用
樓上說的不是遞迴呼叫?我說簡單點 程式首部加上,然後在要內聯的函式後加上inline 例如 var a,b longint function max a,b longint longint inline begin if a b then exit a else exit b begin read ...
遞迴函式呼叫函式自己時,後面的命令跟著執行還是最後執行
直接返回if判斷num 10,到全部完成後,再返回執行2 不會執行語句2 知道遞迴呼叫結束退出後才會執行語句2 在c語言的遞迴函式中,函式前的語句是在最後反過來執行,還是在呼叫語句前就執行呢?d n 10 k 肯定在每次呼叫dtos前執行,k在main 外定義,是全域性變數,預設賦值0 每次呼叫都執...