dinamis05
12.03.2021 21:23

На рисунке приведен фрагмент электронной таблицы. В ячейку D3 введена формула =B2-$A$1. Какое число появится в ячейке С4, если скопировать в нее формулу из ячейки D3?

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
varyuska
10.11.2022 01:18

Числа Фибоначчи: циклом и рекурсией

Числа Фибоначчи – это ряд чисел, в котором каждое следующее число равно сумме двух предыдущих: 1, 1, 2, 3, 5, 8, 13, ... . Иногда ряд начинают с нуля: 0, 1, 1, 2, 3, 5, ... . В данном случае мы будем придерживаться первого варианта.

Формула:

F1 = 1

F2 = 1

Fn = Fn-1 + Fn-2

Пример вычисления:

F3 = F2 + F1 = 1 + 1 = 2

F4 = F3 + F2 = 2 + 1 = 3

F5 = F4 + F3 = 3 + 2 = 5

F6 = F5 + F4 = 5 + 3 = 8

...

Вычисление n-го числа ряда Фибоначчи с цикла while

Присвоить переменным fib1 и fib2 значения двух первых элементов ряда, то есть присвоить переменным единицы.

Запросить у пользователя номер элемента, значение которого он хочет получить. Присвоить номер переменной n.

Выполнять следующие действия n - 2 раз, так как первые два элемента уже учтены:

Сложить fib1 и fib2, присвоив результат переменной для временного хранения данных, например, fib_sum.

Переменной fib1 присвоить значение fib2.

Переменной fib2 присвоить значение fib_sum.

Вывести на экран значение fib2.

Примечание. Если пользователь вводит 1 или 2, тело цикла ни разу не выполняется, на экран выводится исходное значение fib2.

fib1 = 1

fib2 = 1

n = input("Номер элемента ряда Фибоначчи: ")

n = int(n)

i = 0

while i < n - 2:

   fib_sum = fib1 + fib2

   fib1 = fib2

   fib2 = fib_sum

   i = i + 1

print(fib2)

Компактный вариант кода:

fib1 = fib2 = 1

n = int(input("Номер элемента ряда Фибоначчи: ")) - 2

while n > 0:

   fib1, fib2 = fib2, fib1 + fib2

   n -= 1

print(fib2)

Вывод чисел Фибоначчи циклом for

В данном случае выводится не только значение искомого элемента ряда Фибоначчи, но и все числа до него включительно. Для этого вывод значения fib2 помещен в цикл.

fib1 = fib2 = 1

n = int(input())

if n < 2:

   quit()

print(fib1, end=' ')

print(fib2, end=' ')

for i in range(2, n):

   fib1, fib2 = fib2, fib1 + fib2

   print(fib2, end=' ')

print()

Пример выполнения:

10

1 1 2 3 5 8 13 21 34 55  

Рекурсивное вычисление n-го числа ряда Фибоначчи

Если n = 1 или n = 2, вернуть в вызывающую ветку единицу, так как первый и второй элементы ряда Фибоначчи равны единице.

Во всех остальных случаях вызвать эту же функцию с аргументами n - 1 и n - 2. Результат двух вызовов сложить и вернуть в вызывающую ветку программы.

def fibonacci(n):

   if n in (1, 2):

       return 1

   return fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(10))

Допустим, n = 4. Тогда произойдет рекурсивный вызов fibonacci(3) и fibonacci(2). Второй вернет единицу, а первый приведет к еще двум вызовам функции: fibonacci(2) и fibonacci(1). Оба вызова вернут единицу, в сумме будет два. Таким образом, вызов fibonacci(3) возвращает число 2, которое суммируется с числом 1 от вызова fibonacci(2). Результат 3 возвращается в основную ветку программы. Четвертый элемент ряда Фибоначчи равен трем: 1 1 2 3.

Объяснение:

0,0(0 оценок)
Ответ:
superillarion15
26.06.2020 14:08

1)

var

  a, b, s : real;

begin

  read (a, b);

  s := a * b;

  write (s:10:4);

end.

 

2)

var

  a, b, c, k : integer;

begin

  read (a, b, c);

  k := 0;

  if a > 0 then inc (k);

  if b > 0 then inc (k);

  if c > 0 then inc (k);

  writeln (k);

end.

 

3)

var

  a : integer;

begin

  read (a);

  writeln ((a mod 10) * (a mod 100 div 10) * (a div 100 mod 10) * (a div 1000));

end.

 

4)

var

  c, n : integer;

begin

  read (n);

  c := 0;

  repeat

    inc (c);

    n := n div 10;

  until n = 0;

  writeln (c);

end.

 

5)

var

  n, sum, i : integer;

begin

  read (n);

  sum := 0;

  for i := 1 to n do

    sum := sum + i;

  writeln (sum);

end.

 

6)

var

  d, n, k : integer;

begin

  read (n, k);

  d := 0;

  while n >= k do

  begin

    d := d + 1;

    n := n - k;

  end;

  writeln ('n div k = ', d);

  writeln ('n mod k = ', n);

end.

 

7)

var

  n, sum, i, tmp : integer;

begin

  read (n);

  sum := 0;

  for i := 1 to n do

  begin

    read (tmp);

    sum := sum + tmp;

  end;

  writeln (sum / n);

end.

 

8)

var

  i, n, s : integer;

  a : array [1..1000] of integer;

begin

  s := 2;

  read (n);

  for i := 1 to n do

  begin

    a[i] := s;

    s := s + 2 * i + 1;

  end;

  for i := 1 to n do write (a[i], ' ');

end.

 

9)

var

  n, i, count, tmp : integer;

begin

  read (n);

  count := 0;

  for i := 1 to n do

  begin

    read (tmp);

    if tmp < 0 then inc (count);

  end;

  writeln (count);

end.

 

10)

var

  n, i, j : integer;

begin

  read (n);

  for i := 1 to n do

  begin

    for j := 1 to i do

      write ('*');

    writeln;

  end;

end.

 

11) //Не понял, как заполняется массив? Тут рандом

var

  a : array [1..1000] of integer;

  i, n : integer;

begin

  read (n);

  for i := 1 to n do

    a[i] := trunc (random (1000)) - 500;

  for i := 1 to n do

    if a[i] > 0 then a[i] := a[i] * (-1)

   else if a[i] < 0 then a[i] := sqr (a[i]);

  for i := 1 to n do

    write (a[i], ' ');

end.

 

12)

var

  n, i, count : integer;

begin

  read (n);

  count := 0;

  for i := 1 to n do

    if n mod i = 0 then inc (count);

  writeln (count);

end.

 

  

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота