👀,开始吧
递归,用最通俗的话来说就是,就是自己重复的调用自己,我们在C语言已经学过递归,其中的汉诺塔和斐波那契数列,下面,我们来用Java实现一下斐波那契数列
/迭代(循环)实现斐波那契数列 /* public static int fib(int n){ if(n<0) { return -1; } if(n==1||n==2){ return 1; } int f1=1; int f2=1; int f3=-1; for( int i=3;i<=n;i++){ f3=f1+f2; f1=f2; f2=f3; } return f3; } */ //递归实现斐波那契数列 /* public static int fib(int n){ if(n==1||n==2) { return 1; } int ret=fib(n-1)+fib(n-2); return ret; } */ /*public static void main1(String[] args) { int ret=fib(41); System.out.println(ret); } } */
递归实现n 的阶乘
//递归求 N 的阶乘 public static int sum(int n){ if(n==1) { return 1; } int tmp=n*sum(n-1); return tmp; } public static void main8(String[] args) { int ret=sum(5); System.out.println(ret); }
正序打印数字
//递归打印数字的每一位 // //作业内容 //按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) (递归) /* public static void everyNumber(int n){ if(n<10){ System.out.println(n); }else{ everyNumber(n/10); System.out.println(n%10); } } //最后实现的一定是sout那一串代码 public static void main3(String[] args) { everyNumber(123);*/ }
逆序打印
public static void everyNumber(int n){ if(n<10){ System.out.println(n); }else{ System.out.println(n%10); everyNumber(n/10); } }
这几个代码都是具有代表性的,大家慢慢学习
在写递归时,确实是有些地方难以理解的,在判断什么时候递归停止的条件时,实际上也就是在判断起始条件
数组
数组创建通式
数组存放元素类型[]数组名=new 类型[]长度
分类来有三种表达形式
先来说静态数组
int[]arr=new int[10];
这个有new的就是静态数组
new可以省略不写
总结三种表达
int[] arr={1,2,3,4,5};
int[] arr=new int[]{1,2,3,4,5};
int[] arr=new int[5]
引用变量:int[]
变量:arr
数组中存储的是地址的哈希值,理解为地址
引用变量存储了存储对象的地址
即引用引用了一个对象,或者指向了一个对象
与C语言一样,下标都从0开始
public class TestDemo { public static void main(String[] args) { int[] arr =new int[]{1,2,3,4,5}; for(int i=0;i<5;i++){ System.out.println(arr.length); } } }
计算长度就是这个方法
数组名.length
循环就和C语言一样,也可以使用for each
但是区别在与
for each就是遍历元素而已,如果要用下表判断数据,比如arr[1]*2,要使用某个元素的时候要用for循环,不可以用foreach。
JVM的结构:
Java虚拟机栈,本地方法栈,堆,方法区,程序计数器
具体的,我们下期再详细讲解奥,886!