对于LYR系统,相当于Jump(0,1) 对于SYR系统,相当于Jump(0,1) 两个系统之和为2米Jump(0,1), 因此有: R Jump(1,1)=2*Jump(0,1)=2*2=4。 S1 现在再看S=2,y=1Jum(2,1) 我们将河中的两个石柱称作S1和S2, 荷叶叫y,考虑先将L上的青蛙的一半 借助于S2和y转移到s1上,当然是 半小号的青蛙在S1上,大的留在L上
11 对于LYR系统,相当于Jump(0,1) 对于SYR系统,相当于Jump(0,1) 两个系统之和为2*Jump(0,1), 因此有: Jump(1,1)=2*Jump(0,1)=2*2=4。 现在再看S=2,y=1 Jump(2,1) 我们将河中的两个石柱称作S1和S2, 荷叶叫y,考虑先将L上的青蛙的一半 借助于S2和y转移到S1上,当然是一 半小号的青蛙在S1上,大的留在L上。 y L R S1 S2
这样LS1S2yR系统分解为: (L S2 y R系统)+(S1S2yR系统) =2*(LS2yR系统) =2*Jump(1,1) 用归纳法 Jump(S, y)=2*Jump(s-1, y)
12 这样 L S1 S2 y R 系统分解为 : (L S2 y R 系统) + (S1 S2 y R 系统) = 2 * (L S2 y R 系统) = 2 * Jump(1,1) 用归纳法 Jump(S, y)=2*Jump(S-1, y)
5.将上述分析出来的规律写成递归形式的与或结点图为: Jump(s,y S!=0 Jump(s-1,y) 2*Jump(s-ly
13 5. 将上述分析出来的规律写成递归形式的与或结点图为: Jump(S,y) y+1 S==0 S!=0 Jump(S-1,y) 2*Jump(S-1,y)
举例:S=3,y=4,算Jump(3,4) Jump(3, 4) A=Jump(2, 4) 2*A 2*20=40 B=Jump(1, 4 2*B 2*10=20 C=Jump(O 2*5=10 4+15 Jmp(3,4)=2(y+1)=2(4+1)=40
14 举例:S=3,y=4,算 Jump(3,4) A=Jump(2,4) 2*B 2*10=20 Jump(3,4) 2*A 2*20=40 2*C 2*5=10 C=Jump(0,4) S==0 4+1 5 B=Jump(1,4) 3 (3,4) 2 ( 1) 2 (4 1) 40 S Jump y = + = + =
#include <stdio.h> 预编译命令 int Jump(int, int) ∥声明有被调用函数 void mainO ∥主函数 主程序开始 int s, y,sum; 整型变量s为河中石柱数y为荷叶数 printi('请输入石柱数s="); ∥提示信息 scanf("%d", &s); /输入正整数s print('"请输入荷叶数y="); ∥提示信息 scanf(%d", &y); 输入正整数 sum=Jump(s,y); Jump(sy)为被调用函数 printf((“Jump(%d,%d)=%dm" S,y,sum);/输出结果 ∥庄程序结束 ∥以下函数是被主程序调用的函数 int Jump(int rint z) 整型自定义函数,r为形参 ∥自定义函数体开始 int k: 整型变量 if(r==0) 如果r为0,则为直接可解结点, k=z+1; ∥直接可解结点,k值为z+1 ∥如果不为1则要调用Jump(r-1, k-2 Jump(r-1, z); ∥计算Jump(r1,Z)再乘以2赋给k return(k); 将k的值返回给 Jump(s,y) ∥定义函数体结束
15 #include <stdio.h> //预编译命令 int Jump(int, int); //声明有被调用函数 void main() //主函数 { //主程序开始 int s,y,sum; //整型变量,s为河中石柱数,y为荷叶数 printf("请输入石柱数s=" ); //提示信息 scanf("%d",&s); //输入正整数s printf("请输入荷叶数y=" ); //提示信息 scanf("%d",&y); //输入正整数y sum=Jump(s,y); //Jump(s,y)为被调用函数 printf(“Jump(%d,%d)=%d\n",s,y,sum); //输出结果 } //主程序结束 //以下函数是被主程序调用的函数 int Jump(int r,int z) //整型自定义函数,r,z为形参 { //自定义函数体开始 int k; //整型变量 if (r==0) //如果r为0,则为直接可解结点, { k=z+1; //直接可解结点,k值为z+1 } else //如果不为1,则要调用Jump(r-1,z) { k=2*Jump(r-1,z); //计算Jump(r-1,z)再乘以2赋给k } return(k); //将k的值返回给Jump(s,y) } //自定义函数体结束