1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

Тема в разделе "Visual Basic", создана пользователем goshanoob, 16 ноя 2010.

  1. goshanoob

    goshanoob Member

    Репутация:
    0
    Регистрация:
    16 ноя 2010
    Сообщения:
    5
    Симпатии:
    0
    Братюни! Такая соль: числа Фибоначчи получаются следующим образом: первое равно 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, но получил длинющую строку унылых чисел. Как можно решить эту проблему?
     
  2. acorn

    acorn PHP Developer

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

    Добавлено: ps. первые два числа фибоначчи равны единице по-моему..
     
  3. etc

    etc Гость

    Репутация:
    0
    Это чтоб наверняка?
     
  4. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    9
    Зачем описывать ByVal num As Integer , если юзаете глобальные?
     
  5. etc

    etc Гость

    Репутация:
    0
    OKEN Это задел на 2 часть задания. Вот начало "удалось", а далее никак..
     
  6. goshanoob

    goshanoob Member

    Репутация:
    0
    Регистрация:
    16 ноя 2010
    Сообщения:
    5
    Симпатии:
    0
    Это всё по невнимательности)

    Массивы хорошо, но я выбираю трудный путь!
     
  7. acorn

    acorn PHP Developer

    Репутация:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    585
    Симпатии:
    3
    вот тогда пример:
    PHP:
    function getNext(iab)
    {
    arr[i] = b;
    if (
    NgetNext(i+1barr[i]);
    }
    arr[1] = 1;
    arr[2] = 1;
    10;
    arr = array();
    getNext(3arr[1], arr[2]);
    print(
    arr);
    сорри, бэсик не знаю
     
  8. goshanoob

    goshanoob Member

    Репутация:
    0
    Регистрация:
    16 ноя 2010
    Сообщения:
    5
    Симпатии:
    0
    Спасибо!
    В итоге запилил следующий код:
    Код:
    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
    Изначально мне не хватило широты мышления, чтобы осознать, что можно добавить цикл в вызывающую процедуру, а не в рекурентную)
     
Загрузка...

Поделиться этой страницей