Написать рекурсивную функцию вычисления чисел Фибоначчи - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Мне нужно написать рекурсивную функцию вычисления чисел Фибоначчи, основанную на рекуррентных формулах: F(2n) = 2F(n + 1)F(n) − F(n)2 F(n)2 - это степень 2 F(2n + 1) = F(n + 1)F(n) + 2F(n)2 + ( − 1)n. ( − 1)n. - это в степени n Вот мой код но он не работает, выдает переполнение стека.
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
long int F(int n) {
    int k=0,i=0;
     for(i=0;i<2;i++)
     {
         k++;
          if (n==0) return 1;
            else 
                if (n==1) return 1;
                    else 
                        if(k%2==0)
                            return 2*F(n+1)*F(n)-F(n*n);
                    else
                            return F(n+1)*F(n)+2*F(n*n)+powf(-1,n);
     }
}
 
void main () {
 int n,k;
 setlocale(LC_ALL,"russian");
 printf("Введите число N ");
 scanf("%d",&n);
 if (n<0) {
  printf("Число должно быть не меньше 0!");
  getchar();
  exit (1);
 }
long int f;
 f = F(n);
 printf("Число Фибоначчи с номером %d = %d ",n,f);
 getchar();
 getch();
}

Решение задачи: «Написать рекурсивную функцию вычисления чисел Фибоначчи»

textual
Листинг программы
long int fibo (int n) {
 long int f0=0,f1=1,f2=1;
 for (int i=0; i<n; i++) {
  f2=f1+f0;
  f0=f1;
  f1=f2;
 }
 return f2;
}

Объяснение кода листинга программы

  1. Передаем в функцию fibo целое число n.
  2. Инициализируем первые три числа последовательности Фибоначчи: f0=0, f1=1, f2=1.
  3. С помощью цикла for вычисляем n-1 членов последовательности Фибоначчи.
  4. На каждой итерации цикла меняем значения f0, f1, f2.
  5. При каждой итерации f2 становится результатом суммы f1 и f0, f0 присваивается значение f1, а f1 присваивается значение f2.
  6. После завершения цикла возвращаем последнее вычисленное значение f2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы