1.将十进制数转换成二进制数使用递归实现:递归一般使用逆向思维,求大值,由小值一步一步向上堆叠进行。求一个十进制数的二进制表示就是每轮都进行除以2的运算和每轮都保留余数的运算。最后再把余数反序相加就是这个十进制数的二进制表示。递归:就是在方法中再一次调用这个方法,使用关键字return进行返回(当执行完成这个方法后,程序执行返回到调用这个方法的地方),方法中调用方法意味着在方法中创建一个又一个的返回点,可以理解为程序建立多个层,当然方法是相同的,当这一层执行完毕,返回到上一层的调用点继续执行。
一次又一次的调用to方法,直到传入to方法的第一个参数为0时,不再使用return调用to方法,开始由深层向外层逐层返回,在返回的过程中会执行每一层剩下的代码:+AZ[a%b],这样这些余数就窜起来表示成二进制了。为什么a/b能等于0;因为ab都是整型,当1/2时就等于0;碰巧的是转换成二进制时,余数组合时需要反转,而递归操作将字符相加的过程时由深层到外层的,所以不用进行反转。
对斐波纳契数列(1、1、2、3、5、8、13、21)使用递归:
public static void main(String[] args) {
Fibonacci fibonacci=new Fibonacci();
int result=fibonacci.fib(5);
System.out.println(result);
}
public int fib(int index){
if(index==1||index==2){
return 1;
}else{
return fib(index-1)+fib(index-2);
}
}
}
这一次递归同一层调用了两次函数,但是执行顺序都是先执行第一个函数
fib(index-1)
,在返回时再执行第二个函数
fib(index-2);