Здравствуйте, я перепробовал многое, но так и не могу понять, как переделать такую программу на рекурсию?
Конечно, легче было бы написать просто for (i in 0 until 7), что-то в таком роде, но консольная программа должна быть универсальна для любых введенных значений, как это получилось сделать в 1-ой программе
Условие:
Написать рекурсивную функцию вычисления чисел Фибоначчи: 1,1,2,3,5,8,13,21,…
Используя ее, найти первые семь нечетных членов последовательности.
исходный код:
fun fibonacci(n: Int) {
var fibonacci1 = 0
var fibonacci2 = 1
var fibonacci: Int
if ( n == 1 ) print("1 ")
if ( n > 1 )
{
var k = 0
print( "1 ")
while(k != n-1 )
{
fibonacci = fibonacci1 + fibonacci2
if ( fibonacci % 2 != 0 ) {
k++
print ("$fibonacci ")
}
fibonacci1 = fibonacci2
fibonacci2 = fibonacci
}
}
}
fun main()
{
//Написать рекурсивную функцию вычисления чисел Фибоначчи: 1,1,2,3,5,8,13,21,… Используя ее, найти…
//первые семь нечетных членов последовательности.
print("Введите кол-во чисел Фибоначчи, которые хотите увидеть: ")
val n = readLine()!!.toInt()
fibonacci(n)
}
код, который имеется для рекурсии:
fun fibonacci(n: Int): Int {
if(n == 0) return 0;
if(n == 1 || n == 2) return 1;
return fibonacci(n-1)+fibonacci(n-2);
}
fun output(n: Int) {
var k = 0
var value = n
for (i in 0 until value)
{
while (k != n)
if (fibonacci(i) % 2 != 0) {
print("${fibonacci(i)} ")
k++
}
value++
}
}
fun main()
{
//Написать рекурсивную функцию вычисления чисел Фибоначчи: 1,1,2,3,5,8,13,21,… Используя ее, найти…
//первые семь нечетных членов последовательности.
print("Введите кол-во чисел Фибоначчи, которые хотите увидеть: ")
val n = readLine()!!.toInt()
output(n)
}