私はC + +の初心者です。私は非常に単純なC++プログラムを構築することからなる練習をしています。C++で簡単な再帰のコード例をいくつ見つけることができますか?
先生は、関数とメソッドで再帰を使用する必要があることを強調しました。私は、C++のメソッド内で再帰を使用する方法を知りたいと思っています。私はいくつかのコード例を探していたが、何も見つけられなかった。私の深い懸念は、クラス/インスタンスの名前を知らずにメソッドがそれ自身を呼び出す方法です。
私はC + +の初心者です。私は非常に単純なC++プログラムを構築することからなる練習をしています。C++で簡単な再帰のコード例をいくつ見つけることができますか?
先生は、関数とメソッドで再帰を使用する必要があることを強調しました。私は、C++のメソッド内で再帰を使用する方法を知りたいと思っています。私はいくつかのコード例を探していたが、何も見つけられなかった。私の深い懸念は、クラス/インスタンスの名前を知らずにメソッドがそれ自身を呼び出す方法です。
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)
}
ありがとうございます。それはまさに私が探していたものです。 –
私は宿題がRecursive Descent Parserを書くことだと思います。 Cでの簡単な例: uBASIC
LL(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
面白いです。ありがとう。 –
は、あなたが "C++再帰" をお好みの検索エンジンを尋ねてみましたがありますか? – Mat
"私は非常に単純なC++コンパイラを構築する練習をしています" - これは冗談ですか? – Ulterior
メンバ関数を追加のインスタンスポインタでフリー関数として実装すると、再帰は現在のインスタンスの 'this'ポインタを次の呼び出しに渡します...正確に何を混乱させるのですか? –