2015-08-26 3 views
0

Я использовал итеративный подход для добавления всех цифр числа до тех пор, пока сумма не станет номером единицы. Мой код:Превышен лимит ошибок. Добавить цифры номера

def addDigits(self, num): 
    self.x=num 
    a=[] 
    sum=0 
    count=0 
    count1=0 
    p=0 
    while((self.x)/10>0): 
     while(self.x>0): 
      self.x=self.x/10 
      count=count+1 
     self.x=num 
     while(count>0): 
      if(count==1): 
       self.x=self.x%10 
       sum=sum+self.x 
      else: 
       self.x=self.x/(10**(count-1)) 
       sum=sum+self.x  
       self.x=num 
       self.x=self.x%(10**(count-1)) 


      count=count-1 

     self.x=sum 

     num=self.x 
    return self.x 

Я получаю время превышена ошибке для ввода, где сумма> 10.Please предложить несколько способов решить эту проблему таким образом, чтобы правильно выход может быть там

+0

К сожалению получило его забыл добавить сумму = 0 в конце – soul

+0

use http://cs.stackexchange.com/ – martianwars

+0

Принимая только это утверждение, чтобы сохранить его просто self.x = self.x/10, self.x никогда не будет равен или меньше нуль (если вы используете Python 3x), он будет очень-очень маленьким, поэтому у вас будет бесконечный цикл. Я бы предложил добавить счетчик цикла, напечатать self.x и счетчик и выйти из цикла после того, как счетчик достигнет некоторого разумного числа, например 100, чтобы проверить это. –

ответ

0

Я упростил алгоритм: здесь 2 реализации (с 1, соответственно 2 вложенных циклов):

def addDigits(self, num): 
    aux = num 
    sum = 0 
    while aux > 9: 
     sum = sum + aux % 10 
     aux = aux/10 
     if aux <= 9: 
      sum = sum + aux 
      aux = sum 
      sum = 0 
    return aux 

def addDigits(self, num): 
    aux = num 
    sum = 0 
    while True: 
     while aux > 9: 
      sum = sum + aux % 10 
      aux = aux/10 
     sum = sum + aux 
     aux = sum 
     sum = 0 
     if aux <= 9: 
      break 
    return aux 

Примечания:

  • Я заменил self.x на aux; нет никаких причин, чтобы иметь частный элемент, используемый только для хранения метод внутренних (и временные) ДАННЫХ

  • Поскольку метод не зависит от каких-либо членов класса может быть оформлены в виде @classmethod

+0

Привет, вы нашли свой ответ здесь? – CristiFati

Смежные вопросы