java笔记→递归算法、枚举法、辗转相除法

来源:互联网 发布:opengl编程指南 第9版 编辑:程序博客网 时间:2024/06/07 21:49

递归算法的基本思想是对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解。
例子:斐波纳契数列的问题使用递归来解答

public static int digui(int n){    if(n==1){        return 1;    }    if(n==2){        return 2;    }else{        return digui(n-1)+digui(n-2);    }}    public static void main(String[] args){    System.out.println(digui(10));//10为斐波纳契数列的前10项    }

2、枚举法:

例子:用100元买100只鸡,公鸡5元一只。母鸡3元以及。小鸡1元三只。

public static void main(String[] args){    for (int x = 0; x <= 100; x++) {        for (int y = 0; y <= 100; y++) {            for (int z = 0; z <= 100; z++) {                    if ((x + y + z == 100) && (x * 5 + y * 3 + z / 3.0 == 100)) {                        System.out.println("公鸡:" + x + " " + "母鸡:" + y + " " + "小鸡:" + z);                }            }        }    }}

注意:
A)Z/3的值为0;必须使用Z/3.0来转换一下类型。
B)int x=6,y=8;
boolean b;
b=x>y&&++x==–y;
System.out.println(b+”,”+x+”,”+y); 输出b,x,y的值x=6,y=8,b=false
原因:&&号有个特点,左边执行的结果为false时不执行右边代码;
C)int x=6,y=8;
boolean b;
b=x

int m=36,n=24;int max=m>n?m:n;int min=m<n?m:n;int t;for(int i=1;i>=1;i++){    t=min%max;    min=max;    max=t;    if(max==0){        System.out.println("最大公约数为:"+min);        System.out.println("最小公倍数为:"+(m*n)/min);        break;    }}
0 0
原创粉丝点击