组合数,百度词条是这样解释的:从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. hdu 1698 Just a Hook(线段树基础)

    成段更新的线段树,加入了延时标记............ 线段树这种东西细节上的理解因人而异,还是要自己深入理解......慢慢来 #include <iostream> #include ...

  2. 搭建Ubuntu12.04交叉编译服务器

    最近在公司学着搭建一台Linux服务器作为交叉编译的主机之用,服务器端选择了Ubuntu12.04 LTS桌面版,客户端采用Windows XP平台,使用SSH工具软件putty登录到Linux主机, ...

  3. 第2章 开始入手 —— 01 创建第一个 Android 应用程序

    创建一个新的 Android 项目 操作步骤: (1) 选择 File | New | Android Application Project ,弹出 New Android Application ...

  4. Linux编程之UDP SOCKET全攻略

    这篇文章将对linux下udp socket编程重要知识点进行总结,无论是开发人员应知应会的,还是说udp socket的一些偏僻知识点,本文都会讲到.尽可能做到,读了一篇文章之后,大家对udp so ...

  5. orchard相关网址

    1.官网文档  http://docs.orchardproject.net/ 2.github  https://github.com/OrchardCMS/Orchard 3.stackoverf ...

  6. pythong下的unittest框架

    今天有空测试了下TestSuit的执行顺序,用discover遍历过来的tests,用runner执行. 只会识别继承了unittest的测试类中的测试用例.按setup和teardown的顺序进行执 ...

  7. 干货云集 WOT 2017全球架构与运维技术峰会揭密技术难点

    WOT,World Of Tech专注互联网IT技术领域,是一场不容错过的技术盛会!WOT 2017全球架构与运维技术峰会三大章节,15大技术专场,60+国内外一线互联网精英大咖站台,打造兼顾技术视野 ...

  8. JavaScript中String.prototype.replace() 方法的使用

    摘抄于:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace ...

  9. 传统flv网页视频(flvplayer)--兼容

    1.flv网页视频 项目中需要web打开视频,百度搜了好几个插件,本来是打算用H5 vedio,但是客户的浏览器用的比较老,如果用H5标签的话,IE9以下的浏览器是不支持的.所以费劲又去找了其他插件. ...

  10. js实现复制内容

    一.实现点击按钮,复制文本框中的的内容                         <script type="text/javascript"> function ...