どうすれば有限の手順で計算を終えられるか考える。
ひとつ考え方を示す。(模範的なものではない。)

計算式はどんな場合でも2つの部分に分けることができる。
ex) a*b/(c+d)-e*f
→ [a*b/(c+d)] - [e*f]
このとき二つの部分を結んでいるのはもっとも優先順位の低い演算子(この場合は-)
である。ここでkeisan関数が完成したと仮定する。これを$keisanと呼ぶ。
するとkeisan関数は、

1.もっとも優先順位の低い演算子を見つけ、これをopとする;
2.$keisan(左被演算子) と$keisan(右被演算子)に対して、opを実行する。
3.結果を返す。

と書くことができる。ここで$keisanをkeisanで置き換えて見る。すると
keisanは渡された式を2つに分けて、それぞれを別のkeisanに渡す。
渡されたほうのkeisanもその式を2つにわけて・・・ということが起こる。これは
永遠に終わらないので、

0.if(渡された式が単一の数字) その数字をintに変換して返す。

を付け加えればよい。これで枠組みは完成である。
あとはどのようにこれらを実現するか考えればよい。