Chinaunix首页 | 论坛 | 博客
  • 博客访问: 40841
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 78
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-22 15:02
文章分类

全部博文(5)

文章存档

2016年(3)

2014年(2)

我的朋友

分类: Python/Ruby

2014-07-25 11:01:30

通常 f(n) = m*f(n-1)+n
n太大深度太深,就不能计算了

此时可以做个变通,让f有记忆功能,然后在外面
for i in range(n):
   f(i)

从而绕开递归深度的问题

sample:

#this will....
def f(n):
  if n < 2:
     return 1
  return f(n-1)+f(n-2)


#to this,will work fine
dRes = {}
def f2(n):
  if n in dRes:
      return dRes[n]
  
dRes[n] = dRes[n-1] + dRes[n-2]
  return dRes[n]

for i in range(n):
 f2(i)


  
阅读(1906) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~