Для последовательности Фибоначчи найти k-й член последовательности - C (СИ)
Формулировка задачи:
Для последовательности Фибоначчи:
1) Найти k-й член последовательности
2) Получить первые n членов последовательности
3) Верно ли, что сумма первых n членов последовательности есть четное число?
не пойму как сделать 1) если пользователь введет например 0 или 1, у меня выходит ошибка.
закидывать сначала в массив всю последовательность нельзя, понятное дело.
хотел так, но тут проблемы с 0 и 1 элементами, можно как-то по-человечески сделать первый пункт?
fibi[0]=0; fibi[1]=1; printf("Kakkoi k chlen vuvesti1? "); scanf("%i", &num_elem); for(i=2; i<num_elem; ++i) { fibi[i]=fibi[i-2]+fibi[i-1]; re_elem=fibi[i]; } printf("%i chlen = %i",num_elem,re_elem);
Решение задачи: «Для последовательности Фибоначчи найти k-й член последовательности»
textual
Листинг программы
#include <stdio.h> void fib(unsigned n, int printSequence); int isEvenFib(unsigned x); int main(void) { int i, x; do { printf("Input positive X "); scanf("%d",&x); } while (x<0); printf("\nZadanie #1\n"); fib(x,0); printf("\n\nZadanie #2\n"); fib(x,1); printf("\n\nZadanie #3"); for (i = 0; i < x; i++) printf("\nSum of F[0]..F[%d] is %s", i, isEvenFib(i) ? "even" : "odd" ); printf("\n\n\nProgram is terminated. Press any key to exit ", i); getchar(); return 0; } void fib(unsigned n, int printSequence) { int i; unsigned a = 1, b = 1, temp; if (n<0) return; if (printSequence) printf("%d %d ",a,b); for (i = 1; i < n; i++) { temp = a; a += b; b = temp; if (printSequence) printf("%d ",a); } if (!printSequence) printf("%d ",a); } int isEvenFib(unsigned x) { int i; unsigned a = 1, b = 1, result = 2, temp; if (x < 1) return 0; for (i = 1; i < x; i++) { temp = a; a += b; b = temp; result += a; } return !(result & 1); }
Объяснение кода листинга программы
- Программа начинается с функции
main()
, где пользователю предлагается ввести положительное числоx
. Это число будет использоваться для вычисления последовательности Фибоначчи. - После ввода числа
x
, программа переходит к функцииfib()
, которая вычисляетk
-й член последовательности Фибоначчи. В этой функции используются три переменные:a
иb
, которые представляют собой первые два члена последовательности, иtemp
, которая используется для временного хранения значенияa
при вычислении следующего члена. - В основной функции
main()
после вызова функцииfib()
программа переходит к следующей задаче, где пользователю предлагается ввести еще одно положительное числоx
. - Затем программа переходит к функции
isEvenFib()
, которая проверяет, является ли числоx
четным членом последовательности Фибоначчи. В этой функции используются те же три переменныеa
иb
, что и в функцииfib()
, а также переменнаяresult
, которая используется для хранения суммы чиселa
иb
. - В основной функции
main()
после вызова функцииisEvenFib()
программа переходит к следующей задаче, где пользователю предлагается ввести еще одно положительное числоx
. - Затем программа переходит к циклу
for
, который вычисляет сумму первыхx
членов последовательности Фибоначчи и выводит сообщение о том, является ли эта сумма четной или нечетной. - В конце программы пользователю предлагается нажать любую клавишу для выхода из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д