递归的几种应用
来源:互联网 发布:美国手机直播软件 编辑:程序博客网 时间:2024/05/16 10:52
package com.Animal;import org.junit.Test;public class TestDiGui {/* * n的阶乘 循环 * * 5!= 5*4*3*2*1 * * */@Testpublic void test1(){int n=5;int result=1;for(int i=1;i<=5;i++){result = result*i;}System.out.println(result);}/* * n的阶乘 递归 * 方法调方法 * 5!= 5*4*3*2*1 * 5!=5*4! * 4!=4*3! * 3!=3*2! * 2!=2*1! * 1!=1*1! * */@Testpublic void test2(){int n=5;int result = jcdg(n);System.out.println(result);}private int jcdg(int n) { // 5! if(n==1){return 1;}return n*jcdg(n-1);}/* * 1 1 2 3 5 8 13 * * 1 * 1 * 1 1 * 1 1 1 * 1 1 1 1 1 * 1 1 1 1 1 1 1 1 * * f(n) = f(n-1)+f(n-2) 斐波那契数列 * */@Testpublic void test3(){int n=12;int result = dgfbnq(n);System.out.println(result);}private int dgfbnq(int n) {if(n==1||n==2){return 1;}return dgfbnq(n-1)+dgfbnq(n-2);}// 循环 求斐波那契数列@Testpublic void test4(){int n=12;int n_1=1;int n_2=1;int result=0;for(int i=3;i<=n;i++){result = n_1+n_2;n_1=n_2;n_2=result;}System.out.println(result);}@Testpublic void test5(){/* * 二分法查找数组中的某个元素 找到返回 索引 找不到 返回-1 * 只能找有序的数组 * binarySearch() * */int[] arr={1,3,4,5,7,9,13};int index = findIndex(arr,0);System.out.println(index);}private int findIndex(int[] arr, int j) {/*for(int i=0;i<arr.length;i++){if(arr[i]==j){return i;}}return -1;*/int left=0;int right=arr.length-1;int middle=-1;while(left<=right){middle = (left+right)/2;if(arr[middle]==j){return middle;}else if(arr[middle]>j){right = middle-1;}else{left = middle+1;}}return -1;}@Testpublic void test6(){int[] arr={1,3,4,5,7,9,13};int left=0;int right=arr.length-1;int result = erfenDiGui(arr,left,right,0); // System.out.println(result);}private int erfenDiGui(int[] arr,int left,int right, int j) {int middle;if(left<=right){middle = (left+right)/2;if(arr[middle]==j){return middle;}else if(arr[middle]>j){right = middle-1;return erfenDiGui(arr,left,right,j);}else{left = middle+1; // return erfenDiGui(arr,left,right,j);}}return -1;}/*private int erfenDiGui(int[] arr, int j) {int left=0;int right= arr.length-1;int middle;if(left<=right){middle = (left+right)/2;if(arr[middle]==j){return middle;}else if(arr[middle]>j){right = middle-1;int[] arr2 = Arrays.copyOfRange(arr, 0, right+1);return erfenDiGui(arr2,j);}else{left = middle+1;int[] arr2 = Arrays.copyOfRange(arr, left, right+1);return erfenDiGui(arr2,j);}}return -1;}*/}
阅读全文
0 0
- 递归的几种应用
- 几种递归的的方法
- 树的几种遍历方式(递归/非递归)
- 蓝桥杯-递归常用的几种套路
- 递归几种题目
- 触发器的几种应用
- UIImage的几种应用
- mysql的几种应用
- UIImage的几种应用
- 递归和递归的应用
- 递归算法的应用
- 递归的应用
- 递归的应用
- 递归的应用
- 递归的应用
- 递归函数的应用
- 递归函数的应用
- 递归函数的应用
- 深入解读大数据
- 在kinetic 中安装rbx1和模拟器
- Eclipse汉化(Neon)
- 【MAC】 curl : (1) Protocol https not supported or disabled in libcurl
- Uva 1339 Ancient Cipher 简单解读
- 递归的几种应用
- 微信隐藏代码整理
- Codeforces 864D Make a Permutation!
- lua源码阅读(5)-lua_State
- bzoj 4184: shallot 分治+线性基
- Android textview 代码中设置粗体效果
- 简约而不简单的Django新手图文教程
- java-nio之zero copy深入分析
- gradle buildTypes