Я пытаюсь напечатать серии Фибоначчи, используя рекурсию, и мой код не заканчивает рекурсию. Можете ли вы сказать мне, если я пропустил something.I думаю, что второй рекурсии происходит в бесконечный цикл и я не могу понять, почему это происходитПечать серии фибоначчи в рекурсии
class Main
{
public static void main (String[] args)
{
int k=7;
int x=0,y=1;
fib(x,y,k,0);
return;
}
public static void fib(int x,int y,int k,int cnt)
{
int z;
if(cnt>k)
return;
if(cnt<=k)
{
z=x+y;
x=y;
y=z;
System.out.println("value is"+z);
fib(x,y,k,cnt++);
}
}
}
Если вы пытаетесь изучить рекурсию, вам следует рассмотреть подход Imran, описанный ниже. Решение, которое вы, в то время как технически рекурсивно, на самом деле не является «естественным» рекурсивным решением (оно «хвостовое рекурсивно» и поэтому его изменение на нерекурсивный цикл является тривиальным). Идея решения Имрана заключается в том, что (общее) определение числа Фибоначчи само рекурсивно (оно использует числа Фибоначчи в определении!). Естественное рекурсивное решение воспользовалось бы этим. Следовательно, 'fib (n) = fib (n-1) + fib (n-2)' - это определение ... а также (псевдо) код. – rliu