y*3
2 楼
没有人知道吗?。。。跪求!
j*6
5 楼
尾递归实现和语言没关系吧?(理解不对的话求大牛指正) 不过一般情况下递归都不
是尾递归
所以就用循环之类的写吧~
是尾递归
所以就用循环之类的写吧~
A*g
6 楼
有关系,尾递归是指每个function call的最后一步是call这个function自己,所以前
面stack的内容和后面计算没关系,就可以不存前面stack里的内容了,LISP的解析器或
编译器会做这样的优化
(define (sum start end)
(if (= start end) start
(+ start (sum (+ start 1) end))))
同样的写法,Java或C++一般还是会存整个stack,然后一层层返回
int sum(int start, int end) {
if (start==end)
return start;
else
return start+sum(start+1, end);
}
Java/C++ 如果用loop的话,就不用stack了
int sum(int start, int end) {
int sum = 0;
for (int i=start; i<=end; i++)
sum+=i;
return sum
}
【在 j*********6 的大作中提到】
: 尾递归实现和语言没关系吧?(理解不对的话求大牛指正) 不过一般情况下递归都不
: 是尾递归
: 所以就用循环之类的写吧~
面stack的内容和后面计算没关系,就可以不存前面stack里的内容了,LISP的解析器或
编译器会做这样的优化
(define (sum start end)
(if (= start end) start
(+ start (sum (+ start 1) end))))
同样的写法,Java或C++一般还是会存整个stack,然后一层层返回
int sum(int start, int end) {
if (start==end)
return start;
else
return start+sum(start+1, end);
}
Java/C++ 如果用loop的话,就不用stack了
int sum(int start, int end) {
int sum = 0;
for (int i=start; i<=end; i++)
sum+=i;
return sum
}
【在 j*********6 的大作中提到】
: 尾递归实现和语言没关系吧?(理解不对的话求大牛指正) 不过一般情况下递归都不
: 是尾递归
: 所以就用循环之类的写吧~
相关阅读
百度CEO:从来不怕华尔街,百度就要任性砸O2O (转载)请教书单 for becoming a better 程序猿IBM是干什么的How to design Netflix?alphabet, Page留了一手?大神们推荐个靠谱的CCC/ICC吧丑男多作怪生物公司赚的一点不比IT少为啥工资那么不给力我难道就要一直相亲么 我已经受不了了Google电面网友热议“女子被拐后深山成教师”:纵容拐卖九章还有人团购期望薪水说低了怎么办?【有包子】旧金山的BART通勤有没有月票?刷题时代已经结束了么?Facebook system designTwitter entry level software engineering project求推荐TWTR一个月内会被buyout了Never underpaid下一步应该怎么走