![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
FladeX |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Функция:
Как видно, там происходит рекурсия. Однако она идет не так как надо - походу учитывается лишь первый вызов функции. Такой же код на javascript (с учетом синтаксиса конечно) отрабатывается верно. В чем моя ошибка? |
|
|
kuler |
![]()
Сообщение
#2
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
ну видимо sqt не становится меньше 100
![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
FladeX |
![]()
Сообщение
#4
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
ну видимо sqt не становится меньше 100 ![]() Становится. Можно и другое значение поставить для верности - это не суть важно, главное что рекурсия не так работает( Функция получает исходный треугольник, и разбивает его на более мелкие треугольники до тех пор, пока их площадь не станет меньше какого-либо значения (в данном конкретном случае я поставил 100). Чтобы было нагляднее, привожу скриншот результата работы такой функции в JavaScript и то, что у меня получается в Qt. |
|
|
kuler |
![]()
Сообщение
#5
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
вообще код написан по татарски. Надо разбить на модель представление, то есть сначала рассчитать точки, а потом уже отобразить. А так сиди, разбирайся
почему то мне сдается что перед drawLine неплохо было бы курсор установить в нужное место, но это всего лишь мысль |
|
|
FladeX |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Да вроде порядок кода нормальный, по-другому уже не то будет... Да и разбивать там особо-то нечего, ~10 строк всего.
А установка курсора что даст? Ведь drawLine проводит линию по полученным координатам, поэтому установка курсора здесь ничего не изменит (имхо). |
|
|
SABROG |
![]()
Сообщение
#7
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Да вроде порядок кода нормальный, по-другому уже не то будет... Да и разбивать там особо-то нечего, ~10 строк всего. А установка курсора что даст? Ведь drawLine проводит линию по полученным координатам, поэтому установка курсора здесь ничего не изменит (имхо). Сдаемся, выкладывай javascript ![]() |
|
|
FladeX |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
вот функция:
Или полностью весь код надо? (1000 строк) |
|
|
SABROG |
![]()
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
У меня есть подозрение, что проблема в смешивании операций целочисленных типов данных с плавающей запятой. Там где 2, лучше сделать 2.0, где 100 - 100.0. Т.к. в некоторых случаях компилятор может считать 2 - 1.999..., 100 -99.999....
|
|
|
FladeX |
![]()
Сообщение
#10
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Попробовал так.. Тоже не помогло.
Там суть в том, что рекурсия идет, но не по всем вызовам. Конкретно ошибка в этом участке
Такое ощущение, что учитывается только первый вызов из условия, а остальные не учитываются. Даже на рисунке видно, что идет только одна ветка рекурсии, хотя должно быть на n-ом шаге 4*n вызовов. |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 4:59 |