遞迴:(重複中找變化,變化中找重複)
1.找重複(子問題)
2.找重複的變化量->引數
3.找引數變化趨勢->設計出口
(這裡面的題目有可能不需要使用遞迴,主要就是了解遞迴思路)
1.求n的階乘:= n*(n-1)*...*1
找重複:求(n-1)的階乘是原問題的重複->子問題
找變化:n在逐漸減小,n作為引數
找邊界:n最小為1,即n==1為邊界->出口
static int f1(int n)
return n*f1(n-1)
;}
2.列印i~j:
找重複:i,i+1,(i+1)+1,((i+1)+1)+1,...j
找變化:i在逐漸變化,作為引數
找邊界:當i超過j程式結束->出口
static void f2(int i ,int j)
system.out.println(i)
; f2(i+1,j)
;}
3.對arr的所有元素求和
static int f3(int [
]arr ,int count)
return arr[count]+f3(arr,count++)
;}
4.字串反轉 eg:abcd
找重複: 以d為切點,拼反轉的abc
以c為切點,拼反轉的ab
以b為切點,拼反轉的a
即dcba
找變化:下標end
找邊界:end = 0時
static string f4(string str , int end)
return str.charat(end)+f4(str,end--)
;}
還沒寫完,後續補充。。。
邏輯思維與C C 解題
考慮這樣一些陳述 西電有四位同學中的一位做了好事,分別詢問,他們的回答分別是 a說 不是我 b說 是c c說 是d d說 c胡說 已知四人中三人說了真話,一人說的是假話,請問誰說了謊話,誰做的好事。通過簡單的規約我們即可獲得答案,b和c有一人說謊,a和d自然說的都是實話,d說 c胡說,則c說慌,c是...
兔子繁殖 遞迴法與思路
題目描述 有一種兔子,出生後乙個月就可以長大,然後再過乙個月一對長大的兔子就可以生育一對小兔子且以後每個月都能生育一對。現在,我們有一對剛出生的這種兔子,那麼,n個月過後,我們會有多少對兔子呢?假設所有的兔子都不會死亡。輸入輸入僅一行,包含乙個自然數n n 40 輸出輸出僅一行,包含乙個自然數,即n...
4 1遞迴基礎與遞迴的巨集觀語意
本質上,將原來的問題,轉化為更小的同一問題 假設我們需要對陣列進行求和操作 只是為了更好理解遞迴程式 要求如下 求解從索引為0到n 1的陣列元素和。分析 為了能求解從索引為0到n 1的陣列元素和,可以分解為第0個數加上索引從1到n 1的陣列元素和,如下 此時求解索引從1到n 1的陣列元素和的規模比求...