2016-04-24 9 views
-2

再帰では、再帰呼び出しの前または再帰呼び出し後に計算を特定する方法は?多くのツリーの問題で再帰の理解

例えば

// code for calculation and then recursion call 
boolean xyz() 
{ 
    x = xyz(); 

    if(x ==c ondition) 
     return true; 
} 

// Code for recursion call then calculation 
boolean xyz() 
{ 
    if(x == condition) 
     return true; 

    xyz(); 
} 

私はこのシナリオを観察ではなく、それがどのように機能するかを理解することができ、ご提案に

+0

私は何ごめんなさい! –

+0

私は、関数への再帰呼び出しの後に前提条件または事後条件チェックを何度も求めたいので、その違いは何ですか? –

+0

それは完全にアルゴリズムに依存しますか?私はこれがどのように一般的に答えられるのか分かりません。それはあなたが出る前に家で朝食を取ることと、あなたが机に着いたら朝食を取ることの違いは何かを尋ねるようなものです。それは、100万点に依存します。 –

答えて

1

を提供してくださいものを使用するとき、私たちの場合」などの基本的な構造を考えます底に達したら基本価値を返し、そうでなければもっと深くなる」

void xyz() 
{ 
    if(x==condition) 
    { 
     return some_base_value; 
    } 
    else 
    { 
     return xyz(); 
    } 
} 

ここでは、古典的な階乗関数の例です:

long factorial(int n) 
{ 
    if (n == 0) 
    return 1; 
    else 
    return(n * factorial(n-1)); 
}