Найти - Пользователи
Полная версия: Рекурсия Переполнение стека.
Начало » Python для новичков » Рекурсия Переполнение стека.
1
Massa1994
Преет всем.

У меня есть какая функция:

def ontimer(fun, t):
# Завёт функцию fun через каждые t миллисекунд
time.sleep(t/1000.)
fun()

Как можно изменить эту функцию чтобы ошибка исчезла?
Мне нужно чтобы.
Её можно была использовать именно так.

def fun():
.......
ontimer(fun, 10)
kise97
А какая у вас выходит ошибка? (не уверен, но)
Budulianin
Massa1994
Как можно изменить эту функцию чтобы ошибка исчезла?

Где ошибка ?

придумайте какое-то условие, для остановки рекурсии, чтобы не было переполнения

непонятно, что вы вообще делаете :)
Massa1994
Budulianin
В pythone есть модуль turtle. Там есть функция ontimer(fun, t) она делает то что и моя
но там никакой ошибки нету

import turtle
a = 0
def primer():
global a
a += 1
print a
turtle.ontimer(primer, 0)

primer()
turtle.mainloop()

Я пытаюсь написать такую же как эту.
kise97
Какие у вас выводятся ошибки?
Как вариант, посмотрите исходники http://pastebin.com/LirppRQg
dimy44
Massa1994
import turtle
a = 0
def primer():
global a
a += 1
print a
turtle.ontimer(primer, 0)
primer()
turtle.mainloop()
Я пытаюсь написать такую же как эту.
по всей видимости здесь имеет место асинхронный вызов turtle.ontimer(primer, 0), т.е. вы передали функцию primer методу ontimer, а (упрощённо) он уже асинхронно вызывает primer. Типа как after в ткинтер, или e32.ao_sleep(time_, func) в PyS60… Я так думаю. А у вас рекурсивный вызов, который конечно когда-то превысит лимит
Budulianin
Massa1994
В pythone есть модуль turtle.

Да, с функцией ontimer из turtle.py не переполняется стек

Надо исходник смотреть, если хочется понять, что и как :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB