Structure and Interpretation of Computer Programs 读书笔记

据说是MIT的编程入门书,不得不感慨这才是真的编程入门书,而不是语言书,他讲的都是编程语言的基本概念。同时也意识到写程序也应该惜墨如金。

recursive process 和 iterative process

int factorial(int n)
{
    if(n == 1) return n;
    else return n * factorial(n-1);
}

int factorial_iter(int counter, int n, int result)
{
    if(counter > n) return result;
    else return factorial_iter(counter+1, n, counter*result);
}
int factorial(int n)
{ return factorial_iter(1, n, 1); }

这两个不都是递归函数吗?他们是递归函数,但是他们的思考方式是不一样的。上面的函数定义是以里面的factorial能得到所要结果为假设写出来的,他称为recursive process。下面的函数看似递归,实际上是在维护程序运行的状态。两种写法实际上基于机器计算的两个等价但是内容非常不一样的理论基石:lambda演算和图灵机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值