摘要: 题目描述: 输入两个整数,求出两个数的最大公约数。 前提: 需要提前了解欧几里得辗转相除求最大公约数算法。 实现步骤: 1.找重复:当m%n不等于0时: m= n ,n= m%n; 2.找变化: m=n n=m%n 3.找边界: m%n==0时,直接返回n; 关键代码: //求最大公约数 publi 阅读全文
posted @ 2020-05-27 10:50 木原纺 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 输出第n项的斐波那契数列 解题步骤: 1.找重复: 第n项 = 第n-1项 + 第n-2项 2.找变化: fib(n) = fib(n-1)+fib(n-2) 3.找边界:n==1 或n==2 时候 return 1 关键代码: //斐波那契数列(多分支递归) public static 阅读全文
posted @ 2020-05-27 10:27 木原纺 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题目描述:翻转字符串(递归方式) 实现步骤: 1.找重复:字符串最后一个字符元素与上一个字符元素的拼接 2.找变化: str.charAt(end) + revers(str,end -1 ); 3.找边界: end=0 关键代码: //翻转字符串 public static String reve 阅读全文
posted @ 2020-05-27 10:03 木原纺 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 对arr数组的所有元素进行求和 解决步骤: <1>找重复: arr[0]+sum[arr,0+1] <2>找变化:arr[begin] + sum [arr,begin+1] <3>找边界:if(begin==arr.length) 关键代码: //arr数组累加和 public sta 阅读全文
posted @ 2020-05-27 09:36 木原纺 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 用递归的形式打印i到j 解决步骤: 1.找重复: System.out.println(i) 2.找变化: i ——》 i+1 3.找边界: i > j 停止递归 关键代码: //打印i到j public static void printij(int i ,int j){ if(i>j 阅读全文
posted @ 2020-05-27 09:14 木原纺 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题目描述:求n的阶乘 解决步骤: 1.找重复: n! = n*(n-1)! 而求n-1的阶乘就是原问题的重复 2.找变化: 变化的量应该作为参数 3.找边界: 函数或方法的出口。 关键代码: //递归形式代码 public static long factorial (int n){ if(n==1 阅读全文
posted @ 2020-05-27 08:59 木原纺 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 定义:在数学和计算机科学中,一个方法或者函数在定义的时候,调用了自己(通常来说递归就是自己调用自己,但是不能死循环) //递归框架模板public static void f (int i){ if(i==0){ //递归的出口 return ; } f(i-1); //自己调用自己(有参数变化) 阅读全文
posted @ 2020-05-27 08:33 木原纺 阅读(336) 评论(0) 推荐(0) 编辑