递归函数:自己调用自己的函数就是递归函数,可能会导致死循环,需明确写出函数的返回值
代码结构:
① 基本情况,可直接求解
② 递归情况,大事化小,自己调用自己
有默认值的函数:
变参:
1.创建不带()的方法:def 方法名 : [ 返回值类型 ] = { }
2.创建接受变参的方法:参数类型 *
3.变参传值:①参数类型对应值。 eg:b("Java","Scala")
②_* eg:b(List_*)
链式风格:
特点:可读性较好,整体风格简洁
语法为 this.type 和 this
小习一下
1.计算累加
定义一个函数求1-n的和;
基本情况:f(1)=1
递归情况:f(n)=n+f(n-1)
2.计算整数的阶乘问题
计算一个整数的阶乘是一个经典的递归问题。假设我们要计算n的阶乘,记作n!=1*2*3*4*...*n,其定义为:
基本情况:0!=1
递归情况:n! = n*(n-1)!
3.斐波那契数列
定义:基本情况:f(0) = 1,f(1) = 1
递归情况:f(n) = f(n-1)+f(n-2)(当n>=2)。求它的第n项。
4.打印数字的各个位数
基本情况:f(n)=输出个位,n<9
递归情况:f(n) = f(n/10)+输出个位(当n>=10)
5.极简汉诺塔
f(n,A,B,C):把n个盘子从A移到C,借用B过渡