stage1 重构测试且成功00-05
This commit is contained in:
36
stage1/test18_recursion.spl
Normal file
36
stage1/test18_recursion.spl
Normal file
@@ -0,0 +1,36 @@
|
||||
/* ===== 模块6:函数 =====
|
||||
* test18_recursion — 递归函数
|
||||
* 难度:3/5
|
||||
* 验证点:递归调用、多路递归、递归终止条件
|
||||
*/
|
||||
fn fib(n: i32) i32 {
|
||||
if n <= 1 { ret n; }
|
||||
ret fib(n - 1) + fib(n - 2);
|
||||
}
|
||||
|
||||
fn fact(n: i32) i32 {
|
||||
if n <= 0 { ret 1; }
|
||||
ret n * fact(n - 1);
|
||||
}
|
||||
|
||||
fn main() i32 {
|
||||
/* 斐波那契 */
|
||||
var f0 := fib(0);
|
||||
if f0 != 0 { ret 1; }
|
||||
var f1 := fib(1);
|
||||
if f1 != 1 { ret 2; }
|
||||
var f5 := fib(5);
|
||||
if f5 != 5 { ret 3; }
|
||||
var f10 := fib(10);
|
||||
if f10 != 55 { ret 4; }
|
||||
|
||||
/* 阶乘 */
|
||||
var fact0 := fact(0);
|
||||
if fact0 != 1 { ret 5; }
|
||||
var fact3 := fact(3);
|
||||
if fact3 != 6 { ret 6; }
|
||||
var fact5 := fact(5);
|
||||
if fact5 != 120 { ret 7; }
|
||||
|
||||
ret 0;
|
||||
}
|
||||
Reference in New Issue
Block a user