Теперь это комбинаторная функция, если вы не знаете:комбинаторной функции C++ с использованием рекурсии
С (п, к) = {1, если к = 0 или к = п С (п-1, k-1) + C (n-1, k) в противном случае
Теперь мне действительно нужно использовать рекурсию для печати треугольника Паскаля.
Хорошо, так что я сделал до сих пор эта простая функция рекурсии:
#include <iostream>
using namespace std;
int Pas(int r, int c) {
if (c == 0 || c == r) {
return 1;
} else {
return Pas(r - 1, c - 1) + Pas(r - 1, c);
}
}
int main(){
cout << Pas(4,2) << endl;
return 0;
}
Теперь эта функция вычисляет отлично, например:
Pas(4,2) = 6
Но у меня проблемы с использованием его чтобы напечатать весь треугольник Паскаля, потому что я новичок в C++ и особенно в рекурсии.
Я был бы признателен за любую обратную связь, и я надеюсь, что кто-то поможет выяснить этот пр. oblem. Но я был бы признателен, если бы вы, ребята, не просто дали мне весь ответ (код) именно так; Я хочу учиться.
Спасибо!
Вызовите свою функцию в цикле (-ах), вы должны иметь это покрытие. – LogicStuff
Рекурсивная функция, даже если она выполнена правильно, будет чрезмерно неэффективной, поскольку каждый нетерминальный вызов генерирует два новых вызова: это экспоненциальный. Чтобы получить представление о правильности, попробуйте позвонить в Pas (2, 4). После исправления функции, чтобы она работала, переопределите ее с помощью итеративного цикла. –
Вы не можете распечатать весь треугольник Паскаля, потому что это бесконечная серия. Вы можете начать с создания функции, которая печатает первые слои 'n'. Функция, скорее всего, вернет 'void'. –