在c#中應該使用哪種返回類型?是否可以使用c#中的「void」返回類型進行遞歸?在c#中遞歸的返回類型
我在返回類型是無效的功能,但是當我叫它,它遞歸地進行無限循環,所以究竟是什麼更好的解決辦法:
我使用的功能說明如下:
void A()
{
//Some code
A()
}
在c#中應該使用哪種返回類型?是否可以使用c#中的「void」返回類型進行遞歸?在c#中遞歸的返回類型
我在返回類型是無效的功能,但是當我叫它,它遞歸地進行無限循環,所以究竟是什麼更好的解決辦法:
我使用的功能說明如下:
void A()
{
//Some code
A()
}
由於您正在調用相同的函數,很明顯它會進入無限循環。條件滿足後,您需要退出此循環,可以通過使用break
關鍵字來實現。
一個'break'不會讓你擺脫由遞歸引起的無限循環。 – 3Doubloons
每個遞歸方法序列必須以某種方式終止。遞歸方法的第一部分通常會有一個分支來測試滿足的條件。這樣,遞歸方法一直持續到結果達到。 例如
static int Recursive(int value)
{
if (value >= 10)
{
// throw new Exception("End");
return value;
}
return Recursive(value + 1);
}
這與返回類型無關。如果條件不提供您的功能將進入無限循環
我認爲你對遞歸的理解需要一些銳化。
細看盡管遞歸的用處,你可以很容易地創建一個遞歸函數 從不返回結果並不能達到終點。 這種遞歸導致計算機執行無限循環。
遞歸可能發生的另一個問題是遞歸的 函數可以使用所有可用的資源(如系統內存 和堆棧空間)。每次遞歸函數自己調用(或調用另一個調用原函數的函數)時,它都會使用一些 資源。當遞歸函數 退出時,這些資源將被釋放,但遞歸級別太多的函數可能會使用所有可用資源 。發生這種情況時,拋出異常 。
這裏的問題不是返回類型。你需要制定一些規則,讓result結束,讓我們說一個深度的recustion調用,或者一些目錄作爲max的復現。
返回類型無關緊要;這是重要的邏輯。 –
同意@Amar ... !!! – Aditi