组合数,百度词条是这样解释的:从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. Linq 更改主键值

    有一个班级表,主键是class_id,在管理班级时要进行逻辑删除,而只是单纯的is_del字段(记录每条数据是否有效)更改为true,主键class_id如果不变动,在再次增加一个班级时,其主键如果和 ...

  2. CSS之纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)

    图形包括基本的矩形.圆形.椭圆.三角形.多边形,也包括稍微复杂一点的爱心.钻石.阴阳八卦等.当然有一些需要用到CSS3的属性,所以在你打开这篇文章的时候,我希望你用的是firefox或者chrome, ...

  3. jsp-4 用cookie实现记住密码

    jsp-4 用cookie实现记住密码 这次就有点简单了 基本是jsp-3的代码但是有些修改 public void login(HttpServletRequest req, HttpServlet ...

  4. Writing clean code is what you must do in order to call yourself a professional.

    Clean Code  A Handbook of Agile Software Craftsmanship

  5. Ubuntu16 64位安装steam, 并解决无法启动的问题

    直接用crtl+shift打开终端,运行下面的命令. sudo add-apt-repository multiverse sudo apt update sudo apt install steam ...

  6. openui5的资料比较少

    openui5的资料比较少,稳定优秀的开源框架,国内了解的人了了,都在追AngularJS.ExtJS.React. React比较新,非死不可出品而且裹挟Native的噱头.Mobile Nativ ...

  7. NTSC色域(CIE1931)计算公式

    色域(CIE1931)=ABS(RC[-6]*RC[-3]+RC[-4]*RC[-1]+RC[-2]*RC[-5]-RC[-6]*RC[-1]-RC[-4]*RC[-5]-RC[-2]*RC[-3]) ...

  8. ArrayList、HashSet、HashTable、List、Dictionary的区别

    在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...

  9. fileupload实现控制大小进行图片上传

    if ($(".img-upload").length > 0) { $('.img-upload').fileupload({ type: 'POST', url: &qu ...

  10. Openjudge-NOI题库-和为给定数

    题目描述 Description 给出若干个整数,询问其中是否有一对数的和等于给定的数.  输入输出格式 Input/output 输入格式: 共三行: 第一行是整数n(0 < n <= ...