У меня есть функция, которая называет себя почти бесконечным количеством раз, но у нее есть конец. Он вычисляет математическую формулу (в текс):Ошибка сегментации в рекурсивной функции
Когда x<a
:
g_{a}(x)=1
Когда x>=a
:
g_{a}(x)=g_{a}(x-1)+g_a(x-a)
Вот мой код (C++):
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <cmath>
using namespace std;
double g(double a, double x){
if (x>=a) return (g(a,x-1)+g(a,x-a));
else if (x<a) return 1;
return 0;
}
int main(){cout << g(sqrt(10000019),10000019);}
I вызовите функцию с помощью g(sqrt(10000019),10000019);
Как остановить SEGFAULT?
С какими значениями a и x вы получаете SEGFAULT? –
А также, не можете ли вы опубликовать [MCVE] (http://stackoverflow.com/help/mcve)? –
BTW это Ackermann_function, я прав? если да, то я сомневаюсь, что вы можете остановить SEGFAULT. – gjha