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