题解 | #跳台阶#
跳台阶
http://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4
class Solution:
a = {}
def jumpFloor(self, number):
# write code here
if number <= 2:
return number
elif self.a.get(number):
return self.a.get(number)
else:
self.a[number] = self.jumpFloor(number-1)+self.jumpFloor(number-2)
return self.a[number] 使用类变量存放全局变量,可以打印出a和number,即:
class Solution:
a = {}
def jumpFloor(self, number):
# write code here
print(self.a)
print('number:',number)
if number <= 2:
return number
elif self.a.get(number):
return self.a.get(number)
else:
self.a[number] = self.jumpFloor(number-1)+self.jumpFloor(number-2)
return self.a[number]
s = Solution()
res = s.jumpFloor(5)
print(res) 结果如下: {}
number: 5
{}
number: 4
{}
number: 3
{}
number: 2
{}
number: 1
{3: 3}
number: 2
{3: 3, 4: 5}
number: 3
8 可以看出计算过程: 1.
self.a[number] = self.jumpFloor(number-1)+self.jumpFloor(number-2)先算前半部分
self.jumpFloor(number-1)递归到尽头后,再算后半部分。
2.类变量a,是可以共享的(每次递归不会变)。
