2011-12-18 2 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

Интересно. Благодарю. –

Смежные вопросы