黑马程序员技术交流社区
标题:
关于递归
[打印本页]
作者:
xcvbzbvcx
时间:
2015-9-17 21:32
标题:
关于递归
将一整数逆序后放入一数组中(要求递归实现) Ex : 1234 变为 {4,3,2,1}
*/
static int revert(int rs[], int i, int number) {
if (i < rs.length) {
rs[i] = number % 10;
number = (number - number % 10) / 10;
return revert(rs, i + 1, number);
} else {
return 0;
}
}
本人菜鸟一枚,最近自学到关于递归方面的知识,一直在看例子,看到这个一直没想通,求大神帮忙解释下,或者有没有什么好的关于递归的资料。不胜感激
作者:
anyway1919
时间:
2015-9-17 22:07
package com.hmtest.demo;
/**
* 将一整数逆序后放入一数组中(要求递归实现) Ex : 1234 变为 {4,3,2,1}
*
*/
public class diguiDemo1 {
public static void main(String[] args) {
//定义的数组,可以看做是一个装东西,以备定义的方法用
int [] rs = new int [5];
//定义一个整形数组,接收返回值
int [] arr = revert(rs,0,54321);
//遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
}
//定义方法:1返回值类型为整形数组,参数为传入整形数组,用于保存逆序后的数字;
//i,可以用来作为数组的角标,
//number为传入的需要逆序的整数
static int [] revert(int rs[], int i, int number) {
//判断方法执行的条件
if (i < rs.length) {
//一个数字模于10,得到整数的最后一位数
rs[i] = number % 10;
//此时是略去最后一位数的整数
number = (number - number % 10) / 10;
//递归,将以上重新运算的结果再传入函数
return revert(rs, i + 1, number);//当if条件不满足时就结束方法
} else {
return rs;
}
}
}
复制代码
作者:
xiaoya0o0o
时间:
2015-9-17 22:16
import java.util.Iterator;
public class DiGuiDemo {
/**
* @param args
*/
public static void main(String[] args) {
/*
* 递归:其实就是功能的重复使用,但是每次该功能被调用参数都变化(使用了上一次运算的结果)。
* 1,函数自身调用自身。
* 2,一定要定义条件,否则.StackOverflowError。栈溢出。
* 3,注意:递归次数过来容易溢出。
*
*/
int sum = getSum(8000);// 4 3 2 1
System.out.println("sum="+sum);
}
public static int getSum(int num){
if(num == 1){
return 1;
}
return num + getSum(num - 1);
}
}
复制代码
作者:
anyway1919
时间:
2015-9-17 22:20
//利用递归求十进制的二进制变现形式
private static void toBin(int num) {
if (num>0) {
toBin(num/2);
System.out.println(num%2);
}
作者:
anyway1919
时间:
2015-9-17 22:21
//用递归实现求和
private static int getSum(int n) {
if (n==1)
return 1;
return n+getSum(n-1);
}
http://blog.csdn.net/anyway1919/article/details/48491445
作者:
sniper170fly
时间:
2015-9-17 23:11
大概就是这个过程
递归分析.png
(171.88 KB, 下载次数: 11)
下载附件
2015-9-17 23:11 上传
作者:
Ralap军
时间:
2015-9-18 00:32
用递归把整数逆序转换成数组
class Test {
public static void main(String[] args){
int a = 1234560;
int[] as = new int[16]; //对于一个整型整数,足够了
int count = getNum(as, 0, a); //获取整数多少位,也就是数组中的有效元素个数
System.out.println("count : "+count);
for(int i =0; i<count; i++){
System.out.print(as[i]+ "\t");
}
}
public static int getNum(int[] as, int index, int num){
if(num == 0){ //等于代表全部取完
return 0;
}
if(index<as.length){
as[index++] = num%10; //把当前num的个位数存入数组中
return 1+getNum(as, index, num/10); //继续把剩下数的存入数组,+1代表已存一个元素
}else{
return 0;
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2