На страницу 1, 2 След. |
|
Annita Super Girl |
Зарегистрирован: 22.09.2005
Сообщений: 578
|
Обратиться по нику
|
Annita |
Ответить с цитатой | | |
|
Есть поцедура:
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
|
Обратиться по нику
|
|
|
|
choor Человек-загадка |
Зарегистрирован: 09.11.2005
Сообщений: 2097
|
Обратиться по нику
|
|
|
“How would you like to suck my balls, Mr. Garrison?!?!” |
Graff Sadko Гуру |
Зарегистрирован: 20.09.2005
Сообщений: 1343
|
Обратиться по нику
|
Graff Sadko |
Ответить с цитатой | | |
|
я воще не спец конечно но помойму это работать не будет ибо
из (intY*Math.Abs(B(intY\2)) )
вызывается процедура B, а процедура сама себя вызывать не может
моё скромное имхо |
|
|
|
|
|
|
Tuchkov Профессионал |
Зарегистрирован: 05.10.2005
Сообщений: 759
|
Обратиться по нику
|
Tuchkov |
Ответить с цитатой | | |
|
Цитата: |
а процедура сама себя вызывать не может
|
не согласен, это вроде как реверсивный вызов зовется. |
|
|
|
|
|
|
Graff Sadko Гуру |
Зарегистрирован: 20.09.2005
Сообщений: 1343
|
Обратиться по нику
|
Graff Sadko |
Ответить с цитатой | | |
|
во, поискал в гугле
цитата
"При каждом вызове процедурой самой себя выделяется дополнительный объем этой памяти. Процедура, вызывающая сама себя, называется рекурсивной. Рекурсивная процедура, которая бесконечно вызывает саму себя, приводит к ошибке."
а процедура B сдается мне будет себяч бесконечно вызывать пока intY не станет меньше нуля |
|
|
|
|
|
парам парам парам |
No я здесь ельцин |
Зарегистрирован: 01.08.2005
Сообщений: 3746
|
Обратиться по нику
|
|
|
|
Tuchkov Профессионал |
Зарегистрирован: 05.10.2005
Сообщений: 759
|
Обратиться по нику
|
Tuchkov |
Ответить с цитатой | | |
|
Цитата: |
Рекурсивная процедура, которая бесконечно вызывает саму себя, приводит к ошибке."
а процедура B сдается мне будет себяч бесконечно вызывать пока intY не станет меньше нуля
|
раз функция вызывает саму себя по условию, то вызывать она себя будет не бесконечно, а ограниченное число раз... |
|
|
|
|
|
|
No я здесь ельцин |
Зарегистрирован: 01.08.2005
Сообщений: 3746
|
Обратиться по нику
|
No |
Ответить с цитатой | | |
|
пока собирался написАть тут насчет языка, вы уже стока постов понаделали. |
|
|
|
|
|
|
brush V.I.P. |
Зарегистрирован: 29.09.2005
Сообщений: 2572
|
Обратиться по нику
|
brush |
Ответить с цитатой | | |
|
это не vb.net
то есть vb очевидно, но оно не скомпилируется (у меня по крайней мере)
может это какой старый бэйсик?
я 4-го уже не помню совсем )
'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
|
Обратиться по нику
|
Annita |
Ответить с цитатой | | |
|
Graff Sadko писал(а): |
во, поискал в гугле
цитата
"При каждом вызове процедурой самой себя выделяется дополнительный объем этой памяти. Процедура, вызывающая сама себя, называется рекурсивной. Рекурсивная процедура, которая бесконечно вызывает саму себя, приводит к ошибке."
а процедура B сдается мне будет себяч бесконечно вызывать пока intY не станет меньше нуля
|
Ты имеешь ввиду пока intY не станет равно 0?
Имхо, оно никогда не примет такое значение, и произойдет зацикливание. Получается у задачи нет ответа? |
|
|
|
|
|
резка проемов |
Graff Sadko Гуру |
Зарегистрирован: 20.09.2005
Сообщений: 1343
|
Обратиться по нику
|
Graff Sadko |
Ответить с цитатой | | |
|
да-да, ты вроде поняла что я хочу сказать
по идее зациклится оно пока Abs(B(intY\2)) не станет больше или равным нулю |
|
|
|
|
|
парам парам парам |
Tuchkov Профессионал |
Зарегистрирован: 05.10.2005
Сообщений: 759
|
Обратиться по нику
|
Tuchkov |
Ответить с цитатой | | |
|
чего-то вы фигню говорите:
Math.Abs - возвращает абсолютное значение указанного числа. А что есть абсолютное значение числа?.. это его величина с положительным знаком. Поэтому вызовет она себя максимум один раз.
и правильный ответ, если я ничего не путаю, intZ = -7 |
|
|
|
|
|
|
Annita Super Girl |
Зарегистрирован: 22.09.2005
Сообщений: 578
|
Обратиться по нику
|
Annita |
Ответить с цитатой | | |
|
Как я понимаю, тут вызывается абсолютное значение от процедеры В, а не от какого-то конкретного числа. И чему это может быть ровно я не представляю |
|
|
|
|
|
резка проемов |
Tuchkov Профессионал |
Зарегистрирован: 05.10.2005
Сообщений: 759
|
Обратиться по нику
|
Tuchkov |
Ответить с цитатой | | |
|
хм... был не прав. действительно, умножение на абсолютное значение функции, которая передает отрицательное число, а не абсолютное значение передаваемого параметра, реально функция зациклится. |
|
|
|
|
|
|
|