状态是相关变量的组合状态,一个变量相当于状态的一个分量
一次循环就是一轮状态转移(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的实现,可以是一个复杂的状态机,也可以是多个状态机串联,第一个处理前缀空格,第二个处理前缀+-号,第三个处理值。然后每个都相对简单(转移规则少)