произведение чисел Фибоначчи C++

нужно рекурсией посчитать произведение чисел Фибоначчи от 1 до N в теории все норм, но на практике работает только для случая N = 4. подскажите пожалуйста в чем проблема?

#include <iostream>
using namespace std;

int fib(int n) {
    if (n <= 1) return 1;
    else return fib(n - 1) + fib(n - 2);
}

int fibproduct(int m) {
    if (m <= 1) return 1;
    else return fibproduct(fib(m-1)) * (fib(m));
}

int main(void) {
    cout << fibproduct(4);
    return 0;
}

Ответы (2 шт):

Автор решения: Harry

Есть у меня ощущение, что вам нужно считать произведение всех чисел Фибоначчи от первого до N-го. Тогда надо просто правильно написать функцию произведение - произведение всех чисел от первого до N-го равно произведению всех от первого до N-1-го на N-е число Фибоначчи:

#include <iostream>
using namespace std;

int fib(int n) {
    if (n <= 1) return 1;
    else return fib(n - 1) + fib(n - 2);
}

int fibproduct(int N) {
    if (N <= 1) return 1;
    return fibproduct(N-1)*fib(N);
}

int main(void) {
    cout << fibproduct(4) << endl;
    return 0;
}
→ Ссылка
Автор решения: Zhihar
int fibproduct(int m) {
    if (m <= 1) return 1;
    else return fibproduct(fib(m-1)) * (fib(m));
}

вот это монструозная функция,

смотрите что она делает:

fibproduct(fib(m-1))

при m > 4 у вас fib(m-1) > 4 и поэтому функция никогда не закончит своего выполнения, а наоборот будет только увеличивать и увеличивать кол-во итераций и в определённый момент у вас переполнится стек и программа упадет с ошибкой

Вам надо было сделать так:

else return fibproduct(m - 1) * fib(m);
→ Ссылка