2014-03-13 77 views
1

在c#中應該使用哪種返回類型?是否可以使用c#中的「void」返回類型進行遞歸?在c#中遞歸的返回類型

我在返回類型是無效的功能,但是當我叫它,它遞歸地進行無限循環,所以究竟是什麼更好的解決辦法:

我使用的功能說明如下:

void A() 
{ 
    //Some code 
    A() 
} 
+0

返回類型無關緊要;這是重要的邏輯。 –

+0

同意@Amar ... !!! – Aditi

回答

0

由於您正在調用相同的函數,很明顯它會進入無限循環。條件滿足後,您需要退出此循環,可以通過使用break關鍵字來實現。

+1

一個'break'不會讓你擺脫由遞歸引起的無限循環。 – 3Doubloons

1

每個遞歸方法序列必須以某種方式終止。遞歸方法的第一部分通常會有一個分支來測試滿足的條件。這樣,遞歸方法一直持續到結果達到。 例如

static int Recursive(int value) 
    {  
    if (value >= 10) 
    { 
     // throw new Exception("End"); 
     return value; 
    } 
    return Recursive(value + 1); 
    } 

這與返回類型無關。如果條件不提供您的功能將進入無限循環

4

我認爲你對遞歸的理解需要一些銳化。

有在Recursion

細看盡管遞歸的用處,你可以很容易地創建一個遞歸函數 從不返回結果並不能達到終點。 這種遞歸導致計算機執行無限循環。

遞歸可能發生的另一個問題是遞歸的 函數可以使用所有可用的資源(如系統內存 和堆棧空間)。每次遞歸函數自己調用(或調用另一個調用原函數的函數)時,它都會使用一些 資源。當遞歸函數 退出時,這些資源將被釋放,但遞歸級別太多的函數可能會使用所有可用資源 。發生這種情況時,拋出異常 。

這裏的問題不是返回類型。你需要制定一些規則,讓result結束,讓我們說一個深度的recustion調用,或者一些目錄作爲max的復現。

也許你也看看Recursive methods using C#