• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Ряд Фибоначчи

  • Автор темы Автор темы goshanoob
  • Дата начала Дата начала
G

goshanoob

Братюни! Такая соль: числа Фибоначчи получаются следующим образом: первое равно 0, второе 1, каждое последующее равно сумме двух предыдущих.
Я написал функцию с рекурсией:
Код:
Function Fib(ByVal vs As Integer) As Integer 
If vs = 0 Then 
Fib = 0 

ElseIf vs = 1 Then 
Fib = 1 
Else 
Fib = Fib(vs - 1) + Fib(vs - 2) 
End If 
End Function 

Dim vs As Integer 
vs = Fib(InputBox("Чис")) 
MsgBox(vs)

Теперь передо мной новая цель - вывести весь ряд, до введённого числа. Видимо нужно последовательно скармиливать процедуре последовательные числа, для этого я пытался запилить цикл for, но получил длинющую строку унылых чисел. Как можно решить эту проблему?
 
позвольте спросить, а зачем рекурсия? вот вам обычный цикл, правда на pascal:
PHP:
a[1]:=1;
a[2]:=1;
for i:=3 to N do
a[i]:=a[i-1]+a[i-2];
всё, в массиве a есть ваши чиселки.

Добавлено: ps. первые два числа фибоначчи равны единице по-моему..
 
Зачем описывать ByVal num As Integer , если юзаете глобальные?
 
OKEN Это задел на 2 часть задания. Вот начало "удалось", а далее никак..
 
Это чтоб наверняка?
Зачем описывать ByVal num As Integer , если юзаете глобальные?
Это всё по невнимательности)

позвольте спросить, а зачем рекурсия? вот вам обычный цикл, правда на pascal:
PHP:
a[1]:=1;
a[2]:=1;
for i:=3 to N do
a[i]:=a[i-1]+a[i-2];
всё, в массиве a есть ваши чиселки.

Добавлено: ps. первые два числа фибоначчи равны единице по-моему..
Массивы хорошо, но я выбираю трудный путь!
 
Спасибо!
В итоге запилил следующий код:
Код:
Function Fib(ByVal i As Double) As Double
If i = 0 Then
Fib = 0
ElseIf i = 1 Then
Fib = 1
Else
Fib = Fib(i - 1) + Fib(i - 2)
End If
End Function

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim vs, i As Integer

vs = InputBox("Укажите номер числа")
For i = 0 To vs - 1

TextBox1.Text = TextBox1.Text & " " & Fib(i)

Next i

End Sub
Изначально мне не хватило широты мышления, чтобы осознать, что можно добавить цикл в вызывающую процедуру, а не в рекурентную)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD