实验二 方法(递归) 递归解决(组合数计算,汉诺塔,回文字符串判断) 一、组合数计算 1. 设计思想 *组合数计算可利用以下方法利用组合数公式计算(注意0!=1!=1,当n=k或k=0时组合数值都为1) 在主类中设计一个方法计算n!,然后再写一个方法返回公式计算的值,即进一步调用n!的计算。 **利 ...
分类:
其他好文 时间:
2017-10-13 23:35:59
阅读次数:
199
1.(1)使用组合数公式利用n!来计算 设计思想:利用递归法求阶乘,利用公式即可求得组合数的计算结果 import java.util.*; public class CombinationNumber { public static void main(String[] args) { // TO ...
分类:
编程语言 时间:
2017-10-13 19:12:08
阅读次数:
259
使用计算机计算组合数 一、实验设计思想: 定义类A来存放递推求阶乘的方法,类B存放利用杨辉三角求cnk的方法,类C存放递归求阶乘的方法,A中即1*2*3.。。。较为简单,B中先定义数组来显示杨辉三角,cnk即a[n+1][k+1]的值。C类中方法即要想求n!则需要n-1!*n以此类推用递归计算。 二 ...
分类:
其他好文 时间:
2017-10-13 18:59:50
阅读次数:
119
用Java实现汉诺塔: 程序设计思想: 1.首先输入盘子的数量n,如果盘子的数量是1,则直接将编号为1的圆盘从A移到C,递归结束。 2.否则: 递归,将A上编号为1至n-1的圆盘移到B,C做辅助塔; 直接将编号为n的圆盘从A到C; 递归,将B上的编号为1至n-1的圆盘移到C,A做辅助塔。 程序流程图 ...
分类:
其他好文 时间:
2017-10-13 14:15:15
阅读次数:
136
一.使用组合数公式利用n!来计算 1.设计思想 先输入整数n和k,分别用计算n!的递归的方法算出n!,k!和(n-k)!的结果,再计算n!/(k!(n-k)!!。用大数类BigInteger来表示n!,k!和(n-k)!的返回类型。最后输出计算的结果。 2.流程图 3.源程序代码 import ja ...
分类:
其他好文 时间:
2017-10-12 23:00:52
阅读次数:
511
一、组合数问题 1、程序设计思想 三个程序都是先在主函数里输入n与k,然后表明计算方法,并输出。然后在计算函数里编写方法。 2、源代码 3、结果截图 二、汉诺塔问题 1、源代码 2、结果截图 三、回文数 1、程序设计思想 通过 StringBuffer dao=new StringBuffer(st ...
分类:
其他好文 时间:
2017-10-12 21:34:17
阅读次数:
133
有三根柱子一次为A,B,C 现在A柱子上有3个块,按照汉诺塔规则移动到C柱子上去,打印步骤? 我们这样理解:A为原始柱,C为目标柱,B为缓冲柱 1.定义一个函数move(n,a,b,c),n为原始柱上面的块数,a为原始柱名称,b为缓冲柱,c为目标柱 2.首先,我们假定原始柱上只有一个块,那就是直接从 ...
分类:
编程语言 时间:
2017-10-12 17:52:54
阅读次数:
309
一、设计思想:汉诺塔n个盘子的移动问题,基本就三步:①将n-1个盘子从A移到B。②将第n个盘子从A移到C。③将B上的n-1个盘子从B移到C。 所以大体上需要两个函数,一个函数用来记录每一步盘子的移动过程,另一个函数用来实现递归操作(递归终止为剩下一个盘子,直接将盘子从A移到C)。 递归函数是在函数中 ...
分类:
其他好文 时间:
2017-10-12 17:52:41
阅读次数:
249
借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。 输入格式: 输入为一个正整数N,即起始柱上的盘数。 输出格式: 每个操作(移动)占一行,按柱1 -> ...
分类:
其他好文 时间:
2017-10-05 16:47:33
阅读次数:
1346
题意:给你一个经典的汉诺塔递归程序,问你最少几步使得三个柱子上的盘子数量相同。(保证最开始盘子数量可以被3整除) 规律:ans(n)=2^(2*n/3-1)+t(n/3)。 t(1)=0. t(n)= t(n-1)+1,n为偶数 t(n-1)*4+2,n为奇数。 Java文件读写主要有以下两种方法, ...
分类:
编程语言 时间:
2017-10-04 16:42:47
阅读次数:
202