Ваш вопрос требует рекурсии, но программа, которую вы пишете, просто использует функцию, по этой причине я пишу очень простой c код для вашего лучшего понимания, вы можете улучшить это после понимания потока и функциональности или задать новый вопрос с какой-то работой. Ниже приведен рабочий код, протестированный на Turbo C, я делюсь полным тестовым кодом.
#include <stdio.h>
#include<conio.h>
#define MAX 100
void fib(int *arr, int num, int a, int b, int term){
if(term == 0 && term <= num){
arr[term] = 1;
term++;
fib(arr,num,a,b,term);
}else if(term ==1 && term <= num){
arr[term] = 1;
term++;
fib(arr,num,a,b,term);
}else if(term <= num){
arr[term] = a+b;
term++;
fib(arr,num,b,a+b,term);
}
}
void main()
{
int firstTerm = 1;//First term of fibbo series
int secondTerm = 1;//Second term of fibbo series
int tracker = 0; // Tracker to track how much term we printed
int i;//To run loop here to check array after recursive function
int ar[MAX],n=5;// n is number of term we want to print
clrscr();
fib(ar,n,firstTerm,secondTerm,tracker);//recursive function call
// below is printing array to check
for(i=0;i<=n;i++){
printf("%d\t",ar[i]);
}
getch();
}
Одна вещь, которую я должен предложить, - если n равно 5, то вы просто получаете 1 1 2 3 5 , В коде я сделал по вашему требованию, поэтому здесь будет напечатано 1 1 2 3 5 8