Мне нужно создать программу, которая запрашивает у пользователя целое число N, а затем распечатывает первые N членов последовательности Фибоначчи, используя функцию void для последовательности Фибоначчи. После одного экземпляра программа должна спросить пользователя, желает ли он продолжить. Если пользователь отвечает Y, программа должна запросить у него другое целое число N, а затем распечатать первые N членов последовательности Фибоначчи и так далее.
Я уже написал код для этого. Это работает в первую очередь. Проблема в том, что, если пользователь решит сделать это снова, результат больше не будет правильной последовательностью Фибоначчи. Ниже приведен код.
#include<stdio.h>
void printFibonacci(int n){
static int n1=0,n2=1,n3;
if(n>0){
n3 = n1 + n2;
n1 = n2;
n2 = n3;
printf("%d ",n3);
printFibonacci(n-1);
}
}
int main()
{
int n;
char choice;
printf("Enter the number of elements: ");
scanf("%d",&n);
printf("Fibonacci Series: ");
printf("%d %d ",0,1);
printFibonacci(n-2);//n-2 because 2 numbers are already printed
printf("\nDo you wish to continue?(Y/N)");
scanf(" %c", &choice);
while (choice=='Y')
{
printf("Enter the number of elements: ");
scanf("%d",&n);
printf("Fibonacci Series: ");
printf("%d %d ",0,1);
printFibonacci(n-2);//n-2 because 2 numbers are already printed
printf("\nDo you wish to continue?(Y/N)");
scanf(" %c", &choice);
}
return 0;
}
Ожидаемый результат - последовательность Фибоначчи. Когда я запускаю приведенный выше код, в первом случае, если я говорю N = 5, это дает правильный результат:
0,1,1,2,3.
Проблема возникает после того, как я отвечаю «Да» на «Вы хотите продолжить? (Да / Нет)». Если я снова введу N = 5, я ожидаю получить 0,1,1,2,3, но вместо этого я получу 0,1,5,8,13.