Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 17:22   #1
goshanoob
 
Регистрация: 16.11.2010
Сообщений: 5
По умолчанию Ряд чисел Фибоначчи (visual basic)

Пасаны! Я убит в щи унылым VB! Числа Фибоначчи получаются следующим образом: первое равно 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, но получил длинющую строку унылых чисел. Как можно решить эту проблему?

Последний раз редактировалось goshanoob; 16.11.2010 в 17:36.
goshanoob вне форума Ответить с цитированием
Старый 16.11.2010, 18:46   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Function Fib(ByVal vs As Integer) As Integer
Dim a As Integer, b As Integer, c As Integer
a = 1
b = 1
c = 0
While c < vs
c = a + b
a = b
b = c
Wend
If c = vs Or vs = 1 Or vs = 0 Then
Fib = True
Else
Fib = False
End If
End Function

Private Sub Command1_Click()
Dim s As Integer, i As Integer
s = Text1.Text
For i = 1 To s
If Fib(i) Then
Print i
End If
Next i
End Sub
доделывайте как вам надо.
にんじゃ

Последний раз редактировалось ROMA2PVT; 16.11.2010 в 18:50.
ROMA2PVT вне форума Ответить с цитированием
Старый 16.11.2010, 20:10   #3
goshanoob
 
Регистрация: 16.11.2010
Сообщений: 5
По умолчанию

Спасибо братюнь!
Переделал вот так:
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

End Sub
goshanoob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ряд фибоначчи Kitti Помощь студентам 1 07.06.2010 17:55
Перевод чисел оптимизация (Visual Basic) maxcoder_1991 Помощь студентам 0 03.03.2010 22:19
Перевод десятичных чисел(Visual Basic) ioda1986 Помощь студентам 1 03.03.2010 00:51
задача:Паскаль и ряд чисел Фибоначчи SEREG@ Помощь студентам 20 16.12.2007 20:05