解一道遞迴呼叫題

2021-06-27 23:40:16 字數 516 閱讀 4262

int ack(int m, int n)

ack(3,3)的輸出是什麼?

假設我們將ack(m,n)填充到乙個二維矩陣的第m行第n列,從函式中可以看出第m行第n列的資料依賴於第m-1行和第m行第n-1列的資料。

根據

if(m == 0)

return n + 1;

可以填充第0行的資料為0,1,2,3,4,5,6,7..........

根據

else if(n == 0)

return ack(m - 1, 1);

可以填充第1行第0列的資料為ack(0,1)

根據

else

return ack(m - 1, ack(m, n -1 ));

可以填充第一行的剩餘資料。

依照上面方法可以填充每一行的第0列和其他各列的資料。前三行的資料還是可以看出規律的,最終可以得出ack(3,3) = 61

解谷歌的一道題

這幾天有一道google的面試題在論壇炒得很火,題目如下 有乙個100層高的大廈,你手中有兩個相同的玻璃圍棋子。從這個大廈的某一層扔下圍棋子就會碎,用你手中的這兩個玻璃圍棋子,找出乙個最優的策略,來得知那個臨界層面。下面給出我的分析和解答。為了得到兩個棋子的最優策略,我們先簡化問題,看看乙個棋子的情...

解一道簡單的演算法題

原題是這樣的 乙個未排序整數陣列,有正負數,重新排列使負數排在正數前面,並且要求不改變原來的正負數之間相對順序。比如 input 1,7,5,9,12,15 ans 5,12,1,7,9,15 且要求時間複雜度o n 空間o 1 我實現的解法 解法1 不考慮時間和空間複雜度 則每次找到乙個正數,取出...

巧解一道階乘排序題

今天,介紹一道在本計算機考試書上的階乘排序 就是將乙個列表長度的階乘種的方式的排列組合輸出 題。下面我們直接看題 在1 49中任意選擇7個數,將這7個數的所有排列可能性全部輸出。例如 1,2,3 的所有輸出有 2,1,3 2,3,1 3,2,1 3,1,2 1,3,2 1,2,3 這道題的關鍵是要找...