АРМАДА
Помогите сделать ДЗ по программированию
На страницу 1, 2  След.
Новая тема Написать ответ

Annita
Super Girl
Зарегистрирован: 22.09.2005
Сообщений: 578
Star (Сумма: 1)
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 12:01 amДобавить в избранноеОтветить с цитатой
Есть поцедура:

Private Sub B(ByVal intY As Integer) As Integer
If intY <0 Then
Return (intY*Math.Abs(B(intY\2)) )
Else
Return (1)
End If
End Sub

Вызываем эту процедуру:


Private Sub C()
Dim intX, intZ As Integer
intX = -7
intZ = B(intX)
Debug.WriteLine(intZ)
End Sub

Чему будет ровняться intZ?

Буду очень признательна за помощь
резка проемов

Tuchkov
Профессионал
Зарегистрирован: 05.10.2005
Сообщений: 759
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 12:25 amОтветить с цитатой
а что это за язык?.. Confused

choor
Человек-загадка
Зарегистрирован: 09.11.2005
Сообщений: 2097
Star (Сумма: 1)
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 12:38 amОтветить с цитатой
бэзик
“How would you like to suck my balls, Mr. Garrison?!?!” :mrgreen:

Graff Sadko
Гуру
Зарегистрирован: 20.09.2005
Сообщений: 1343
Star (Сумма: 1)
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 12:58 amОтветить с цитатой
я воще не спец конечно но помойму это работать не будет ибо
из (intY*Math.Abs(B(intY\2)) )
вызывается процедура B, а процедура сама себя вызывать не может
моё скромное имхо

Tuchkov
Профессионал
Зарегистрирован: 05.10.2005
Сообщений: 759
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 1:07 amОтветить с цитатой
Цитата:
а процедура сама себя вызывать не может



не согласен, это вроде как реверсивный вызов зовется.

Graff Sadko
Гуру
Зарегистрирован: 20.09.2005
Сообщений: 1343
Star (Сумма: 1)
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 1:13 amОтветить с цитатой
во, поискал в гугле
цитата
"При каждом вызове процедурой самой себя выделяется дополнительный объем этой памяти. Процедура, вызывающая сама себя, называется рекурсивной. Рекурсивная процедура, которая бесконечно вызывает саму себя, приводит к ошибке."
а процедура B сдается мне будет себяч бесконечно вызывать пока intY не станет меньше нуля
парам парам парам

No
я здесь ельцин
Зарегистрирован: 01.08.2005
Сообщений: 3746
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 1:19 amОтветить с цитатой
ms vb net Razz

Tuchkov
Профессионал
Зарегистрирован: 05.10.2005
Сообщений: 759
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 1:22 amОтветить с цитатой
Цитата:
Рекурсивная процедура, которая бесконечно вызывает саму себя, приводит к ошибке."
а процедура B сдается мне будет себяч бесконечно вызывать пока intY не станет меньше нуля



раз функция вызывает саму себя по условию, то вызывать она себя будет не бесконечно, а ограниченное число раз... Idea

No
я здесь ельцин
Зарегистрирован: 01.08.2005
Сообщений: 3746
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 1:22 amОтветить с цитатой
пока собирался написАть тут насчет языка, вы уже стока постов понаделали. Razz

brush
V.I.P.
Зарегистрирован: 29.09.2005
Сообщений: 2572
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 2:10 amОтветить с цитатой
это не vb.net
то есть vb очевидно, но оно не скомпилируется (у меня по крайней мере)
может это какой старый бэйсик?
я 4-го уже не помню совсем Smile)
'Return' statement in a Sub or a Set cannot return a value.
Expression does not produce a value.
Handles clause requires a WithEvents variable.
и тд и тп
даже после того как убрал пару очевидных багов
vb я видел давольно давно, а по .net'у напрочь не спец, но как-то это так...
надо "руками" компилировать и понимать, будет работать или нет

Annita
Super Girl
Зарегистрирован: 22.09.2005
Сообщений: 578
Star (Сумма: 1)
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 8:02 pmОтветить с цитатой
Graff Sadko писал(а):
во, поискал в гугле
цитата
"При каждом вызове процедурой самой себя выделяется дополнительный объем этой памяти. Процедура, вызывающая сама себя, называется рекурсивной. Рекурсивная процедура, которая бесконечно вызывает саму себя, приводит к ошибке."
а процедура B сдается мне будет себяч бесконечно вызывать пока intY не станет меньше нуля


Ты имеешь ввиду пока intY не станет равно 0?
Имхо, оно никогда не примет такое значение, и произойдет зацикливание. Получается у задачи нет ответа?
резка проемов

Graff Sadko
Гуру
Зарегистрирован: 20.09.2005
Сообщений: 1343
Star (Сумма: 1)
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 8:08 pmОтветить с цитатой
да-да, ты вроде поняла что я хочу сказать Wink
по идее зациклится оно пока Abs(B(intY\2)) не станет больше или равным нулю
парам парам парам

Tuchkov
Профессионал
Зарегистрирован: 05.10.2005
Сообщений: 759
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 9:38 pmОтветить с цитатой
чего-то вы фигню говорите:

Math.Abs - возвращает абсолютное значение указанного числа. А что есть абсолютное значение числа?.. это его величина с положительным знаком. Поэтому вызовет она себя максимум один раз.

и правильный ответ, если я ничего не путаю, intZ = -7

Annita
Super Girl
Зарегистрирован: 22.09.2005
Сообщений: 578
Star (Сумма: 1)
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 10:26 pmОтветить с цитатой
Как я понимаю, тут вызывается абсолютное значение от процедеры В, а не от какого-то конкретного числа. И чему это может быть ровно я не представляю
резка проемов

Tuchkov
Профессионал
Зарегистрирован: 05.10.2005
Сообщений: 759
Обратиться по нику
# Добавлено:Сб Ноя 12, 2005 11:22 pmОтветить с цитатой
хм... был не прав. действительно, умножение на абсолютное значение функции, которая передает отрицательное число, а не абсолютное значение передаваемого параметра, реально функция зациклится.
Новая тема Написать ответ    ГЛАВНАЯ ~ ФЛЕЙМ

Перейти:  





Генеральный спонсор



Партнеры