1、递归算法一、 某超市为了促销,规定:购物不足 50 元的按原价付款,超过 50 不足 100 的按九折付款,超过 100 元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。二、输入 a,b,c 三个不同的数,将它们按由小到大的顺序输出。三、编程模拟剪刀、石头、布游戏:用 S 表示剪刀,用 R 表示石头,用 P 表示布。规则是:剪刀剪布,石头砸剪刀,布包石头。游戏者分别把自己的选择输入,计算给出结果。参考程序一、var moneya:integer;moneyb:real;beginreadln(moneya);if moneyaaj then begina0:=ai;ai:=aj;a
2、j:=a0;end;write(a1, ,a2, ,a3);readln;end. 三、const ch1=S;ch2=R;ch3=P;var s:string2;winner:byte;b:boolean;beginb:=true;readln(s);case s1 ofch1:case s2 ofch1:b:=false;ch2:winner:=2;ch3:winner:=1;end;ch2:case s2 ofch1:winner:=1;ch2:b:=false;ch3:winner:=2;end;ch3:case s2 ofch1:winner:=2;ch2:winner:=1;ch3
3、:b:=false;end;end;if b then writeln(第,winner,个人赢了)else writeln(没有人赢 );end. 递推算法递推算法是一种用若干步可重复的简单运算(规律)来描述复杂问题的方法。例 1 植树节那天,有五位参加了植树活动,他们完成植树的棵数都不相同。问第一位同学植了多少棵时,他指着旁边的第二位同学说比他多植了两棵;追问第二位同学,他又说比第三位同学多植了两棵;如此,都说比另一位同学多植两棵。最后问到第五位同学时,他说自己植了 10 棵。到底第一位同学植了多少棵树?解:设第一位同学植树的棵数为 a1,欲求 a1,需从第五位同学植树的棵数 a5 入手,
4、根据“多两棵”这个规律,按照一定顺序逐步进行推算:a5=10;a4=a5+2=12;a3=a4+2=14;a2=a3+2=16;a1=a2+2=18;参考程序:Program Exam1;Var i,a:byte;begina:=10; 以第五位同学的棵数为递推的起始值for i:=1 to 4 do 还有 4 人,递推计算 4 次a:=a+2; 递推运算规律writeln(The Num is, a);readlnend.本程序的递推运算可用如下图示描述:递推算法以初始起点值为基础,用相同的运算规律,逐次重复运算,直至运算结束。这种从“起点”重复相同的方法直至到达一定“边界”,犹如单向运动,用循环可以实现。递推的本质是按规律逐次推出(计算)下一步的结果。