М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
aise09
aise09
24.03.2023 00:46 •  Информатика

Составить алгоритм и программу в паскале вывести n-ое число фибоначчи (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …). справка: последовательность чисел, каждый член которой равен сумме двух предыдущих, имеет множество любопытных свойств. () подсказка: а) храним в памяти в каждый текущий момент три числа, текущее и два предыдущих; б) перед началом вычислений f1=1, f2=1; в) после вычисления текущего числа по формуле ft = f1 + f2 необходимо выполнить передвижку чисел f1 = f2 f2 = ft

👇
Ответ:
Victoriahamidul
Victoriahamidul
24.03.2023
Для решения создадим функцию Fib(n), в качестве аргумента она будет получать число n. Эта функция будет возвращать число, которое будет равно f(n-1) + f(n-2). То есть она вызывает себя 2 раза из самой себя до тех пор ,пока не дойдет до 1 или 2.
Добавим условие  на 1 и 2(if n <=2 then Fib:= 1), которое прекратит нашу рекурсию
PascalABC.NET

var

n: integer;

function Fib(n:integer): longint;
Begin
if n <=2 then Fib:= 1 else
Fib:= Fib(n - 1) + Fib(n - 2);
end;

Begin
readln(n);
Writeln(Fib(n));
end.
4,4(44 оценок)
Открыть все ответы
Ответ:
Mikoсладкая
Mikoсладкая
24.03.2023
Option Explicit

Function Mean2(A As Variant) As Double
    'Возвращает среднее арифметическое элементов двухмерного массива
    Dim i As Integer, j As Integer, S As Variant, n As Integer
    S = 0
    For i = LBound(A, 1) To UBound(A, 1)
        For j = LBound(A, 2) To UBound(A, 2)
            S = S + A(i, j)
        Next j
    Next i
    n = (UBound(A, 1) - LBound(A, 1) + 1) * (UBound(A, 2) - LBound(A, 1) + 1)
    Mean2 = S / n
End Function

Sub InitMas2(A As Variant, amin As Variant, amax As Variant)
    'Инициализирует элементы двухмерного массива датчиком случайных чисел
    'amin и amax задают диапазон часел для инициализации
    Dim i As Integer, j As Integer, typ As Integer, ik As Integer, rk As Single
    Dim imin As Integer, jmin As Integer, imax As Integer, jmax As Integer
    imin = LBound(A, 1)
    imax = UBound(A, 1)
    jmin = LBound(A, 2)
    jmax = UBound(A, 2)
    typ = VarType(A) - 8192
    Select Case typ
    Case 2, 3, 17
        ik = Int(amax - amin + 1)
        For i = imin To imax
            For j = jmin To jmax
                A(i, j) = Int(Rnd * ik + amin)
            Next j
        Next i
    Case Else
        rk = amax - amin + 1
        For i = imin To imax
            For j = jmin To jmax
                A(i, j) = Rnd * rk + amin
            Next j
        Next i
    End Select
End Sub

Sub OutMas(A As Variant, prow As Integer, pcol As Integer)
    'Размещает элементы одномерного массива на текущем листе рабочей книги
    'Ячейка в левом верхнем углу имеет адрес (prow,pcol)
    'Размещение идет по колонке
    Dim i As Integer, ic As Integer
    Dim imin As Integer, imax As Integer
    imin = LBound(A, 1)
    imax = UBound(A, 1)
    ic = prow
    For i = imin To imax
        Cells(ic, pcol).Value = A(i)
        ic = ic + 1
    Next i
End Sub

Sub OutMas2(A As Variant, prow As Integer, pcol As Integer)
    'Размещает элементы двухмерного массива на текущем листе рабочей книги
    'Ячейка в левом верхнем углу имеет адрес (prow,pcol)
    Dim i As Integer, j As Integer, ic As Integer, jc As Integer
    Dim imin As Integer, jmin As Integer, imax As Integer, jmax As Integer
    imin = LBound(A, 1)
    imax = UBound(A, 1)
    jmin = LBound(A, 2)
    jmax = UBound(A, 2)
    ic = prow
    For i = imin To imax
        jc = pcol
        For j = jmin To jmax
            Cells(ic, jc).Value = A(i, j)
            jc = jc + 1
        Next j
        ic = ic + 1
    Next i
End Sub

Sub NumElems2(A As Variant, B() As Integer, pm As Double)
    ' Находит в каждой строке двухмерного массива а количество элементов,
    ' превышающих среднее арифметическое всех элементов этого массива pm
    ' и помещает это количство в одномерный массив b.
    Dim i As Integer, j As Integer, kol As Integer
    Dim imin As Integer, jmin As Integer, imax As Integer, jmax As Integer
    imin = LBound(A, 1)
    imax = UBound(A, 1)
    jmin = LBound(A, 2)
    jmax = UBound(A, 2)
    For i = imin To imax
        kol = 0
        For j = jmin To jmax
            If A(i, j) > pm Then kol = kol + 1
        Next j
        B(i) = kol
    Next i
End Sub

Sub main()
    Const m = 40, n = 20, p = 30
    Dim A(1 To m, 1 To m) As Integer, R(1 To m) As Integer
    Dim B(1 To n, 1 To n) As Single, S(1 To n) As Integer
    Dim C(1 To p, 1 To p) As Integer, T(1 To p) As Integer
    Dim i As Integer, mm As Double
    Randomize Timer
    InitMas2 A, -1000, 1000
    OutMas2 A, 1, 1
    mm = Mean2(A)
    NumElems2 A, R, mm
    OutMas R, 1, m + 2
   
    InitMas2 B, 0, 1800
    OutMas2 B, 42, 1
    mm = Mean2(B)
    NumElems2 B, S, mm
    OutMas S, 42, n + 2
   
    InitMas2 C, -1200, 800
    OutMas2 C, 63, 1
    mm = Mean2(C)
    NumElems2 C, T, mm
    OutMas T, 63, p + 2
End Sub

Особенность программы: позволяет работать с массивами любых допустимых числовых типов. Размер массивов фактически ограничен только размером свободной оперативной памяти компьютера.

Для запуска не забудьте разрешить исполнение макросы на уровне безопасности не выше "Средний" и дать доверенный доступ к проектам VBA.
4,5(14 оценок)
Ответ:
alfa2009
alfa2009
24.03.2023
Function gcd(a: integer; b: integer): integer;
// Нахождение НОД
var
  i, a1, b1: integer;
begin
  a1 := a; b1 := b;
  while b1 <> 0 do
  begin
    a1 := a1 mod b1;
    i := b1; b1 := a1; a1 := i
  end;
  result := a1
end;

var
  m, n, k: integer;

begin
  writeln('Введите пару целых чисел');
  readln(m, n);
  k := gcd(m, n);
  if k = 1 then writeln('Числа взаимно простые')
  else writeln('Числа не являются взаимно простыми, НОД=', k)
end.

Тестовое решение:

Введите пару целых чисел
465 532
Числа взаимно простые

Введите пару целых чисел
13440 6930
Числа не являются взаимно простыми, НОД=210
4,4(46 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ