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
- java笔记→递归算法、枚举法、辗转相除法
- c++ 辗转相除法 递归非递归
- 欧几里德算法(辗转相除法)
- 辗转相除法---欧几里得算法
- JAVA实现辗转相除法 欧几里得算法求逆
- 辗转相除法(欧几里得算法)java实现
- 递归实现最大公约数:辗转相除法
- 算法-欧几里得算法(辗转相除法)
- 辗转相除法、更相减损法、Stein算法
- 欧几里德算法(辗转相除法) 求最大公约数
- 最小公约数-辗转相除法&stein算法
- 辗转相除法(欧几里得算法)示意图
- 欧几里得算法之辗转相除法
- 最大公约数欧几里德算法(辗转相除法)
- 欧几里得算法 --- 辗转相除法求最大公约数
- 欧几里得算法(辗转相除法)
- 最大公约数算法 辗转相除法解析
- 辗转相除法和扩展欧几里得算法
- 数据结构(c)——赫夫曼树与赫夫曼编码
- Mac的使用小技巧
- Leetcode 257. Binary Tree Paths
- redis学习笔记(2)---链表adlist
- 基本百度地图制作
- java笔记→递归算法、枚举法、辗转相除法
- 刚开博客,水的开始!
- Android自定义dialog
- const用法
- 文章标题
- php字符串操作
- 陶哲轩实分析 附录 A 习题解答
- leetcode67:Add Binary
- MyEclipse中开发web项目遇到的一些问题