自己關於遞迴的一些理解

2021-10-09 01:22:53 字數 1280 閱讀 5176

遞迴是一種抽象的概念,比如當我們想要完成某一遞迴函式dfs()的功能時,你可以先假設這個dfs()已經有你想要的功能啦,先書寫主題思路即推出dfs(i)和dfs(i-1)間的關係,明確它們的關係之後,就可以寫出主體思路,之後再書寫臨界條件,臨界條件功能寫完,藉著前邊咱們定義的關係,就可以一直逆推到答案,這樣遞迴的具體功能也就實現啦,不關注過程,只關注結果,當然前提在有點思路的情況下

這道題就是求最小平方和的個數,我們可以先設定乙個空的dfs()函式,假設這個函式已具備返回平方和的最小個數的功能書寫,功能抽象化先

直接放下別人的圖捋個思路

這時候就很明顯啦,父親結點的最小平方和個數即dfs(父)就是眾多子節點中dfs(子)中的最小值,依次往上推,就能推出根節點的dfs(根)的值

dfs() 功能 :返回平方和的最小個數

dfs(父) 

dfs(子) dfs(子) dfs(子) 找出最小的dfs(子)的值返回就是dfs(父)的結果

大致思路

for() 之後再把邊界條件要做的事情加上,就完事啦

具體**

public

static

void

main

(string[

] args)

//返回某個數從最低端到這個位置平方和的最小個數的功能即最低高度

public

static

intdfs

(int value,

int border,

int height,

int maxsize)

return min;

}

//正確答案

class

solution

intdfs

(int nums,

int cur,

int tar,

int index)

}//錯誤答案

class

solution

public

static

intdfs

(int nums,

int cur,

int tar,

int index)

}

我關於遞迴的一些理解

遞迴可以作為一種解決問題的思想,簡單來說就是自己呼叫自己,可以用少量的 解決一些複雜的問題,並且這個問題是乙個重複的過程,但是遞迴必須要有乙個遞迴停止的條件,如果遞迴不停止的話就會出現 爆棧 現象 這裡我們使用求乙個數的階層可以來理解遞迴 1!1 2!2 1 2 1 3!3 2 1 3 2 3 2 ...

關於執行緒的來龍去脈和自己的一些理解

關於執行緒的來龍去脈 知道了來龍去脈之後再來看看常見的多執行緒問題 多執行緒併發常見問題 再提幾個小點 1.a123456678的回答仔細想想得出多執行緒的安全問題 2.關於muduo中的多執行緒安全問題的乙個很好地解決方法 void eventloop runinloop const functo...

寫一些關於自己的

我的大學四年就快結束了,再過幾個月就要離開這所大學了。慶幸的是自己又考上了研究生,還能夠繼續在校園裡讀3年的書,也可以算是一件幸福的事情吧。這次讀研的專業是學計算機了,算是自己選擇的,也是自己喜歡的。不用再像本科那時,選了乙個自己不喜歡的,還整天混日子。導師選好了,做的是圖形影象處理。目前,自己的專...