组合数,百度词条是这样解释的:从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数(Combination)

对于计算组合数,需要一定的工作量,计算机可以很好的帮助我们机选组合数,下面总结3种Jav计算组合数的方法;

一:

源代码如下:

package bky_1;
import javax.swing.JOptionPane; public class zuheshu { public static int factorial(int x)
{
if(x==1||x==0)
{
return 1;
}
return factorial(x-1)*x;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int n,k,w;//组合数的上上下限,w表示组合数结果
String n1,n2;
System.out.println("请输入组合数的上下限");
n1=JOptionPane.showInputDialog("enter the upper number");
k=Integer.parseInt(n1);
n2=JOptionPane.showInputDialog("enter the lower number");
n=Integer.parseInt(n2);
w=factorial(n)/(factorial(k)*factorial(n-k));
System.out.println("组合数结果为"+w); } }

介绍:

利用计算阶乘函数的方法,通过公式C(k/n)=n!/(k!*(n-k)!),得到组合数结果。

二:

源代码:

package bky_2;

public class zuheshu2 {
public static int factorial(int x,int y)
{
int i,j;
int a[][]=new int[20][20];
for(i=0;i<20;i++)
{a[i][0]=1;}
for(i=1;i<20;i++)
{a[i][i]=1;} for(i=2;i<20;i++)
for(j=1;j<i;j++)
{a[i][j]=a[i-1][j-1]+a[i-1][j];}
return a[x][y];
} public static void main(String[] args) { int w;
w=factorial(8,2);
System.out.println("计算下限20以内的组合数");
System.out.println("C(2/8)=");
System.out.println(w);
} }

介绍:利用杨辉三角的性质,定义二维数组,直接输出对应的组合数结果。

三:

源代码:

package bky_3;

public class zuheshu3 {
public static int factorial(int x,int y)
{
int a[][]=new int [20][20];
if(y==0||x==y)
{return 1;}
return factorial(x-1,y-1)+factorial(x-1,y); } public static void main(String[] args) {
// TODO Auto-generated method
System.out.println("计算20以内的组合数");
System.out.println("C(8/2)");
System.out.println(factorial(8,2)); } }

介绍:

利用递归函数的性质,递归的调用函数,得到最后组合数的结果。递归函数为

public static int factorial(int x,int y)

{ int a[][]=new int [20][20];

if(y==0||x==y) {return 1;}

return factorial(x-1,y-1)+factorial(x-1,y); }

汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。在Java中,可以利用递归函数进行运行。

源代码:

// TowersOfHanoi.java
// Towers of Hanoi solution with a recursive method.
public class TowersOfHanoi
{
// recursively move disks between towers
public static void solveTowers( int disks, int sourcePeg,
int destinationPeg, int tempPeg )
{
// base case -- only one disk to move
if ( disks == 1 )
{
System.out.printf( "\n%d --> %d", sourcePeg, destinationPeg );
return;
} // end if // recursion step -- move (disk - 1) disks from sourcePeg
// to tempPeg using destinationPeg
solveTowers( disks - 1, sourcePeg, tempPeg, destinationPeg ); // move last disk from sourcePeg to destinationPeg
System.out.printf( "\n%d --> %d", sourcePeg, destinationPeg ); // move ( disks - 1 ) disks from tempPeg to destinationPeg
solveTowers( disks - 1, tempPeg, destinationPeg, sourcePeg );
} // end method solveTowers public static void main( String[] args )
{
int startPeg = 1; // value 1 used to indicate startPeg in output
int endPeg = 3; // value 3 used to indicate endPeg in output
int tempPeg = 2; // value 2 used to indicate tempPeg in output
int totalDisks = 3; // number of disks // initial nonrecursive call: move all disks.
solveTowers( totalDisks, startPeg, endPeg, tempPeg );
} // end main
} // end class TowersOfHanoi

“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。在Java中,可以用递归函数,判断一个字符串是否为回文的。

源代码:

package bky_4;

import java.util.Scanner;

public class huiwenshu {
public static boolean huiwenshu(String text)
{
int length=text.length();
for(int i=0;i<length/2;i++)
{
if(text.charAt(i)!=text.charAt(length-i-1))
{
return false;
}
}
return true;
} public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入一个字符串:");
Scanner s=new Scanner(System.in);
String str=null;
str=s.next();
if(huiwenshu(str))
{System.out.println("是回文数");} else{System.out.println("不是回文数");}
} }

JAVA中方法的定义与使用(课堂学习归纳)的更多相关文章

  1. Java中方法的定义与使用

    Java中方法的定义与使用 1.方法的定义: 方法是一段可以被重复调用的代码块. 方法的声明: public static 方法返回值 方法名([参数类型 变量--]){ 方法代码体: return ...

  2. 深入理解为什么Java中方法内定义的内部类可以访问方法中的局部变量

    好文转载:http://blog.csdn.net/zhangjg_blog/article/details/19996629 开篇 在我的上一篇博客 深入理解Java中为什么内部类可以访问外部类的成 ...

  3. java中方法的定义

    所谓的方法(将方法称为函数)指的就是一段可以被重复调用的代码块. 对于方法的返回值类型有两种使用形式: · 有数据返回:返回值类型就使用 Java 中定义的数据类型: · 无数据返回:使用 void ...

  4. Java中方法的定义与使用,以及对数组的初步了解。

    方法 方法的含义 定义: 方法就是用来完成解决某件事情或实现某个功能的办法. 方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或计算数值. 我们可以通过在程序代码 ...

  5. Java中返回值定义为int类型的 方法return 1返回的是int还是Integer&&finally中return问题

    在Java中返回值定义为int类型的 方法return 1:中返回的是Integer值,在返回的时候基本类型值1被封装为Integer类型. 定义一个Test类,在异常处理try中和finally中分 ...

  6. 深入理解Java中方法的参数传递机制

    形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...

  7. java中方法的重载和覆盖

    java中方法的重载和覆盖 先来了解一下这两个名词的含义. 重载: 在一个类当中才可以重载,方法名相同,参数个数不同或参数个数相同而参数类型不同. 覆盖: 又称重写,在派生类(子类)中重写基类(父类) ...

  8. Java中方法的重载

    Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...

  9. java中方法调用

    JAVA中方法的调用[基础] 一.调用本类中的方法 方法一.被调用方法声明为static ,可以在其他方法中直接调用.示例代码如下: public class HelloWord { /** * @p ...

随机推荐

  1. Trade-----HDU3401----单调队列优化的DP

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3401 题目意思: 有T天,你每天可以以API买进,BPI卖出,最多买ASI个,最多卖BSI个 最多只能 ...

  2. 我是实践派之mongo的一主多从

    mongo一主多从 为什么要做一主多从? mongodb天生就是为了分布式而生的,为了保证数据读写分离和数据安全,把数据放在不同的机子上,可以减少主节点的读压力,而让从节点去承受读请求压力. 主节点用 ...

  3. GMap学习笔记

    GMap学习笔记 1.GMap体系详解 What is the map control (GMapControl)? This is the control which renders the map ...

  4. SVG基础以及使用Javascript DOM操作SVG

    SVG 不依赖分辨率 支持事件处理器 最适合带有大型渲染区域的应用程序(比如谷歌地图) 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快) 不适合游戏应用 Canvas 依赖分辨率 不支持事 ...

  5. Leetcode-34-Search Insert Position-(Medium)

    二分法查找需要插入的位置,需要注意两点 1.如果元素不存在,停止的时候start Index刚好是需要插入的位置 2.如果元素存在,需要向前追溯找到非目标元素的起始边界 #!/usr/local/bi ...

  6. UIKit

    UIAlertView UIAlertView 调用创建好对象的[testObject show]的show方法即可弹出UIAlertView UILabel UILabel常见属性 text:显示文 ...

  7. 接口测试:如何定位BUG的产生原因

    转自公众号<QA之道> 我们从在日常功能测试过程中对UI的每一次操作说白了就是对一个或者多个接口的一次调用,接口的返回的内容(移动端一般为json)经过前端代码的处理最终展示在页面上.ht ...

  8. 通过linux的iso镜像安装(RPM)扩展工具包

    通过linux的iso镜像安装(RPM)扩展工具包 在linux安装软件时,现在越来越流行通过rpm指令安装完成,原因是:采用RPM安装简单方便:越来越多的软件提供RPM安装包:linux的IOS镜像 ...

  9. css基础和心得(二)

    css中的某些样式是具有继承性的.它允许样式不仅应用于某个特定html标签元素 而且应用于其后代.如: p{color:red;}  <p>dsffd<spans>sdfasd ...

  10. 第一百一十九节,JavaScript事件入门

    JavaScript事件入门 学习要点: 1.事件介绍 2.内联模型 3.脚本模型 4.事件处理函数 JavaScript事件是由访问Web页面的用户引起的一系列操作,例如:用户点击.当用户执行某些操 ...