In response to this question I tried to come up with my own solution.
My solution in python 3.X
def efficientalgo(number, x):
print("Start with this number... " + str(number))
# See if a number is dividable by three, if so then divide by 3
if number % 3 == 0:
print("Dividing three...")
number /= 3
print(number)
# use recursion to see if the number can be divided again
number += efficientalgo(number, x)
print("Returning number from division by three now...")
return number
# Divide a number by 2 if it is evenly dividable by 2
if number % 2 == 0:
print("Dividing two...")
number /= 2
print(number)
# Use recursion to see if the number can be divided again
number += efficientalgo(number, x)
print("Returning number from division by two now...")
print(number)
return number
# If a number is not one, then subtract one and call the
if number != 1:
print("Subtracting one now...")
number -= 1
print(number)
# Use recursion to see if the number can be divided again
number += efficientalgo(number, x)
print(number)
return number
# If the number is one, return it and finish.
if number == 1:
print("Returning one now... " + str(number))
return number
print(efficientalgo(100, 1))
Here is a "working" pythonfiddle
The error i get
TypeError: unsupported operand type(s) for +=: 'float' and 'NoneType'
Im confused because i thought in python that everything is an object and that python determined its type from its inputs. Why then does it return a type of none?
Am i missing something big?
Aucun commentaire:
Enregistrer un commentaire