騰訊的遞迴筆試題目

2021-05-23 09:42:40 字數 879 閱讀 5094

題目是這樣的:

f(m, n ) = m + n + 1 , if m*n = 0 

f(m, n) = f(m - 1, f(m, n - 1)) 

填空是:

top = 0; 

do elsewhile (!(-1 == top)); 

printf("f = %d/n", f); 

//解答過程:這是一道遞迴題目,說實話,第一次看到這種遞迴題目,還是感覺比較害怕,畢竟:f(m, n) = f(m - 1, f(m, n - 1))  這種遞迴巢狀遞迴的,我還真是慌了。不過,慢慢經下來,舉幾個例子:就發現也不是很難,例如 f(1,0)=1+0+1=2;

f(1,1)=f(0,f(1,0))=f(0,2)=0+2+1=3;

這樣看著題目就了解多了

看題目的top=0,  堆疊,遞迴的停止條件是top==-1,z 證明堆疊指標是先進棧,在 「++「

以計算f(1,1)的過程就是f(0),然後計算 f(1,0);

嘗試填空:stack[top++]=m-1;

n=n-1; //注意m不能變,這個地方,開始的時候,我也犯糊塗了,後來看了北郵人的解法才明白:

在看else 的情況:

f(1,0)計算出來了,這個時候就需要出棧,m=stack[top-1];   top--;

這個地方其實也是:我也是覺得是stack[top--]就可以了,可是題目給了兩個空,就不知道怎麼填寫了。

後來看了,才明白,這麼不靈活,m-1,top-1;這種用法;

感覺還是考研的時候做1800的時候,那個時候背了好多遞迴的題目,平時用的很少,以後要注意積累! 看來遞迴的題目,看起來也沒這麼可怕,關鍵是先舉了例子,然後才好進入狀態,這個題目,f(1,1)的例子是很好的,並且可以驗證自己的思考是否正確!

騰訊筆試題目

1 一天總共有 3600 24 86400秒。定義乙個長度為86400的整數陣列int delta 86400 每個整數對應這一秒的人數變化值,可能為正也可能為負。開始時將陣列元素都初始化為0。然後依次讀入每個使用者的登入時間和退出時間,將與登入時間對應的整數值加1,將與退出時間對應的整數值減1。這...

騰訊的筆試題目(E卷)

還沒有開始苦練基本功的人,只涉及到語言問題和簡單的 資料結構,其他的作業系統,編譯原理,離散數學,軟體 工程,計算機原理,體系結構等等無一涉及,題目很多,有1個選擇題想不來起來是什麼了,題號不與原試題相符 希望師弟師妹可以 答案,從中學到筆試的經驗 1 計算 a b 2 運算子優先順序問題 2 根據...

騰訊2013研發筆試題目

1.資料庫 資料庫中有可能會存在不一致的資料。造成資料不一致的原因主要有 如果資料庫中存在冗餘資料,比如兩張表中都儲存了使用者的位址,在使用者的位址發生改變時,如果只更新了一張表中的資料,那麼這兩張表中就有了不一致的資料。比如某個訂票系統中,兩個使用者在同一時間訂同一張票,如果併發控制不當,可能會導...