Помогите сделать ДЗ по программированию
На страницу 1, 2  След.
Новая тема Написать ответ
# Сб Ноя 12, 2005 12:01 amAnnita Зарег.: 22.09.2005 ; Сообщ.: 578Ответить с цитатой
Есть поцедура:

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?

Буду очень признательна за помощь
# Сб Ноя 12, 2005 12:25 amTuchkov Зарег.: 05.10.2005 ; Сообщ.: 759Ответить с цитатой
а что это за язык?.. Confused
# Сб Ноя 12, 2005 12:38 amchoor Зарег.: 09.11.2005 ; Сообщ.: 2097Ответить с цитатой
бэзик
# Сб Ноя 12, 2005 12:58 amGraff Sadko Зарег.: 20.09.2005 ; Сообщ.: 1343Ответить с цитатой
я воще не спец конечно но помойму это работать не будет ибо
из (intY*Math.Abs(B(intY\2)) )
вызывается процедура B, а процедура сама себя вызывать не может
моё скромное имхо
# Сб Ноя 12, 2005 1:07 amTuchkov Зарег.: 05.10.2005 ; Сообщ.: 759Ответить с цитатой
Цитата:
а процедура сама себя вызывать не может



не согласен, это вроде как реверсивный вызов зовется.
# Сб Ноя 12, 2005 1:13 amGraff Sadko Зарег.: 20.09.2005 ; Сообщ.: 1343Ответить с цитатой
во, поискал в гугле
цитата
"При каждом вызове процедурой самой себя выделяется дополнительный объем этой памяти. Процедура, вызывающая сама себя, называется рекурсивной. Рекурсивная процедура, которая бесконечно вызывает саму себя, приводит к ошибке."
а процедура B сдается мне будет себяч бесконечно вызывать пока intY не станет меньше нуля
# Сб Ноя 12, 2005 1:19 amNo Зарег.: 01.08.2005 ; Сообщ.: 3746Ответить с цитатой
ms vb net Razz
# Сб Ноя 12, 2005 1:22 amTuchkov Зарег.: 05.10.2005 ; Сообщ.: 759Ответить с цитатой
Цитата:
Рекурсивная процедура, которая бесконечно вызывает саму себя, приводит к ошибке."
а процедура B сдается мне будет себяч бесконечно вызывать пока intY не станет меньше нуля



раз функция вызывает саму себя по условию, то вызывать она себя будет не бесконечно, а ограниченное число раз... Idea
# Сб Ноя 12, 2005 1:22 amNo Зарег.: 01.08.2005 ; Сообщ.: 3746Ответить с цитатой
пока собирался написАть тут насчет языка, вы уже стока постов понаделали. Razz
# Сб Ноя 12, 2005 2:10 ambrush Зарег.: 29.09.2005 ; Сообщ.: 2572Ответить с цитатой
это не 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'у напрочь не спец, но как-то это так...
надо "руками" компилировать и понимать, будет работать или нет
# Сб Ноя 12, 2005 8:02 pmAnnita Зарег.: 22.09.2005 ; Сообщ.: 578Ответить с цитатой
Graff Sadko писал(а):
во, поискал в гугле
цитата
"При каждом вызове процедурой самой себя выделяется дополнительный объем этой памяти. Процедура, вызывающая сама себя, называется рекурсивной. Рекурсивная процедура, которая бесконечно вызывает саму себя, приводит к ошибке."
а процедура B сдается мне будет себяч бесконечно вызывать пока intY не станет меньше нуля


Ты имеешь ввиду пока intY не станет равно 0?
Имхо, оно никогда не примет такое значение, и произойдет зацикливание. Получается у задачи нет ответа?
# Сб Ноя 12, 2005 8:08 pmGraff Sadko Зарег.: 20.09.2005 ; Сообщ.: 1343Ответить с цитатой
да-да, ты вроде поняла что я хочу сказать Wink
по идее зациклится оно пока Abs(B(intY\2)) не станет больше или равным нулю
# Сб Ноя 12, 2005 9:38 pmTuchkov Зарег.: 05.10.2005 ; Сообщ.: 759Ответить с цитатой
чего-то вы фигню говорите:

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

и правильный ответ, если я ничего не путаю, intZ = -7
# Сб Ноя 12, 2005 10:26 pmAnnita Зарег.: 22.09.2005 ; Сообщ.: 578Ответить с цитатой
Как я понимаю, тут вызывается абсолютное значение от процедеры В, а не от какого-то конкретного числа. И чему это может быть ровно я не представляю
# Сб Ноя 12, 2005 11:22 pmTuchkov Зарег.: 05.10.2005 ; Сообщ.: 759Ответить с цитатой
хм... был не прав. действительно, умножение на абсолютное значение функции, которая передает отрицательное число, а не абсолютное значение передаваемого параметра, реально функция зациклится.
Новая тема Написать ответ    ГЛАВНАЯ ~ ФЛЕЙМ
 На страницу 1, 2  След.
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.