Advertisement
system29a

Printin a sequence of numbers without cycles

May 4th, 2012
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.47 KB | None | 0 0
  1. #!/usr/bin/env python
  2. #-*- coding:utf-8 -*-
  3.  
  4. def print_sequence(limit):
  5.     """ Основная функция, которая задаёт начальные аргументы перебирающей функции """
  6.     print_num(len(str(limit)), 0, 0, limit)
  7.  
  8. def print_num(digits, i, buf, limit):
  9.     """ Перебирающая функция, перебор идёт с помощью рекурсии. возвращает True, если последнее число (limit) достигнуто.
  10.     Аргументы:
  11.         digits — номер десятичного разряда
  12.         i      — значение этого разряда
  13.         buf    — кусок числа, который обработали выше в рекурсии """
  14.     current_num = buf * 10 + i
  15.     if digits != 0: # Если не последний разряд
  16.         if print_num(digits - 1, 0, current_num, limit): # Начинаем перебирать следующий разряд
  17.             return True
  18.     else: # Если последний разряд
  19.         print str(current_num), # Выводим число
  20.         if (current_num == limit): # Если это последнее число, выходим из дерева рекурсии
  21.             return True
  22.     if (i != 9):
  23.         if print_num(digits, i + 1, buf, limit): # Тут перебираем значения текущего разряда
  24.             return True
  25.     return False
  26.  
  27.  
  28. print_sequence(1234)
  29. print
  30. print_sequence(0)
  31. print
  32. print_sequence(10000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement