2011-12-18 10 views
-1

私はC + +の初心者です。私は非常に単純なC++プログラムを構築することからなる練習をしています。C++で簡単な再帰のコード例をいくつ見つけることができますか?

先生は、関数とメソッドで再帰を使用する必要があることを強調しました。私は、C++のメソッド内で再帰を使用する方法を知りたいと思っています。私はいくつかのコード例を探していたが、何も見つけられなかった。私の深い懸念は、クラス/インスタンスの名前を知らずにメソッドがそれ自身を呼び出す方法です。

+1

は、あなたが "C++再帰" をお好みの検索エンジンを尋ねてみましたがありますか? – Mat

+6

"私は非常に単純なC++コンパイラを構築する練習をしています" - これは冗談ですか? – Ulterior

+0

メンバ関数を追加のインスタンスポインタでフリー関数として実装すると、再帰は現在のインスタンスの 'this'ポインタを次の呼び出しに渡します...正確に何を混乱させるのですか? –

答えて

5
class Foo 
{ 
public: 
    Foo(int offset) : offset(offset) {} 

    int bar(int x) 
    { 
     if (x == 0) 
     { 
      return offset; // Base-case 
     } 
     return x + bar(x-1); // Recursion 
    } 

private: 
    int offset; 
}; 


int main() 
{ 
    Foo foo(7); 
    std::cout << foo.bar(5) << "\n"; Prints "22" (5+4+3+2+1+7) 
} 
+0

ありがとうございます。それはまさに私が探していたものです。 –

3

Wikipedia: Recursion

私は宿題がRecursive Descent Parserを書くことだと思います。 Cでの簡単な例: uBASIC

+0

LL(1)コンパイラです。彼らは私たちに解析をさせるアルゴリズムを与えることさえできます。 –

+0

質問はコンパイルされなくなりました –

1

例:

#include <iostream> 
    using namespace std; 

    int factorial(int n) // 1, 1, 2, 6, 24, 120, 720, ... 
    { 
    if (n == 0) return 1; 
    return n * factorial(n-1); 
    } 

    main() 
    { 
    int n = 7; 

    cout << "Enter a non-negative integer: "; 
    cin >> n; 
    cout << "The Factorial of " << n << " is " << factorial(n) << endl; 

    return 0; 
    } 

あなたがここでより多くの例を見つけることができます:http://www.cstutoringcenter.com/tutorials/cpp/cpp6.php

+0

面白いです。ありがとう。 –

関連する問題