Вот мой код, и он хорошо работает со значениями от 400 до 4000, но раз около 4 мил, я получаю ошибки переполнения стека.Ошибка переполнения стека возникает при использовании функции рекурсивного фибоначчи
Заранее благодарен!
public class Fib {
static int c=1,b=2;
static long sum1=0,sum2=0;
static long fib(long a){
if(a==1){
return 1;
}
if(a==2){
return 2;
}
else{
return fib(a-1)+fib(a-2);
}
}
public static void main(String[] args){
sum2= fib(4000000);
System.out.println("Sum %f" +sum2);
}
}
В чем вопрос? Вы знаете, что ваша машина имеет ограниченные ресурсы, не так ли? –
Рекурсивные функции выполняются в стеке, а стек не бесконечен. –
Вы получаете ошибку переполнения стека, потому что ваш стек переполнен. – Perception