再谈 循环/递归就是状态机

状态是相关变量的组合状态,一个变量相当于状态的一个分量

一次循环就是一轮状态转移(state transition)

初始状态 -> 按某种规则转移,有些状态属于终止状态,然后状态的某个变量就是所求


当前状态下,各个变量间互动,迁移,达到另一个状态,状态机的一般形式是 while (true) { //转移规则}, for (int i = 0; i < n; ++i ) {}这种是说,i这个状态分量每一轮的转移是固定的(++i),并且i == n 是触发状态机stop的方式之一。 状态机停止的一般形式是在转移的规则里的break或者 return

int state1 = 0, state2 = 1; //state initialization

while (true) {
	// current state is one of the stop states ?
	// if yes, stop , and the state of some of the variables will the reuslt
	if (state1 == 10) break;
	
	// if not, do state transition
	(state1, state2) = transition(state1, state2);
}

return state2; // the state of some of the variables will the reuslt


一个程序可以是多个状态机,比如atoi的实现,可以是一个复杂的状态机,也可以是多个状态机串联,第一个处理前缀空格,第二个处理前缀+-号,第三个处理值。然后每个都相对简单(转移规则少)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值