返回信息流昨天去面某游戏公司,问了一道题:
假设你用递归求f(n)=1+2+。。。+n的值,栈的大小为2M,问最多能算到多少会栈溢出?如果是计算斐波那契数列(在不考虑数值溢出的情况下),又能计算多少?
这是一条镜像帖。来源:北邮人论坛 / cpp / #83206同步于 2014/10/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
一个关于递归调用的面试题
cjx113725
2014/10/9镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
第一问应该是(n - 1)*12 > 2*1024*1024,n>174763.66
每一次调用要保存下一条指令地址,栈帧的ebp,参数,12个字节
http://www.cnblogs.com/bangerlee/archive/2012/05/22/2508772.html
【 在 cjx113725 的大作中提到: 】
: 昨天去面某游戏公司,问了一道题:
: 假设你用递归求f(n)=1+2+。。。+n的值,栈的大小为2M,问最多能算到多少会栈溢出?如果是计算斐波那契数列(在不考虑数值溢出的情况下),又能计算多少?
另外,栈上面的每个函数的帧(活跃记录)的大小和编译器、优化器关系太大了,根本没法确定。而且优化器是可以做尾递归优化的,甚至非尾递归的情况都能优化好。
re,不过面试嘛,懂得多就多说点,把知道的情况都考虑下
【 在 nuanyangyang 的大作中提到: 】
:
: 另外,栈上面的每个函数的帧(活跃记录)的大小和编译器、优化器关系太大了,根本没法确定。而且优化器是可以做尾递归优化的,甚至非尾递归的情况都能优化好。