?个人主页: Aileen_0v0
?热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
?个人格言:“没有罗马,那就自己创造罗马~”
文章目录
`递归``利用递归求斐波那契数列``数组入门`
递归
自己调用自己
StackOverflowError:栈溢出错误,出现的原因可能是以下情况: (1)结束条件不对 (2)结束条件没有 |
public class X { //求n的阶乘 public static int func(int n){ if(n == 1){ return 1; }else{ return n * func(n-1); } } public static void main(String[] args) { System.out.println(func(5)); }}
public class X {// 通过递归打印每一位数 public static void fnum(int n){ if (n < 10) { System.out.println(n); return; }else { fnum(n / 10); System.out.println( n % 10); } } public static void main(String[] args) { fnum(123); }}
利用递归求斐波那契数列
public class X { public static int fib(int n) { if (n == 1 || n == 2) { return 1; } int m = fib(n - 1) + fib(n - 2); return m; } public static void main(String[] args) { System.out.println(fib(5)); }}
利用递归求斐波那契数列的缺点 会进行大量的重复计算 ,使得计算速度变慢 利用迭代求斐波那契数列
public class X { //通过循环方式求斐波那契数列,可避免出现冗余运算 public static int fib(int n){ if (n == 2 || n == 1 ){ return 1; } int m1 = 1; int m2 = 1; int cur = 0; for(int i=3 ;i <= n; i++){ cur =m1 + m2; m2 = m1; m1 = cur; } return cur; } public static void main(String[] args) { System.out.println(fib(10)); }}
数组入门
数组是最简单的一种数据结构存放的都是相同数据类型
空间都连在一起
每个空间有自己的编号,起始位置从0开始.
创建数组的三种方式
public class X { //直接把数据放进数组,无需初始化 //写法1: int [] array = {1,2,3,4,5}; //写法2: int [] array2 = new int[]{1,2,3,4,5}; //初始化一个含五个变量的空数组 int [] array3 = new int[5]; }
创建数组的注意事项
public class X { public static void main(String[] args) { //new这个关键字就是用来创建一个空数组 int[] array; array = new int[]{1,2,3,4}; //中括号当中不能写数字,字符类型用单引号. int[] array1 = {1,2,3,4,5}; char[] chars1 = {'a','b'}; //布尔类型默认值为false boolean[] array2 = new boolean[10]; System.out.println(array2[9]); //引用数据类型的默认值为null String[] array3 = new String[10]; System.out.println("Aileen"); }
public class X { //局部变量使用时要进行初始化,否则会报错 int[] array4; System.out.println(array4); }