5、阶乘练习
阶乘
这一节是要完成一个阶乘的函数,定义一个名为factorial的函数,传递一个类型为u32的变量n,返回一个类型为u32的变量,定义好这个签名后就可以提交了
题目如下
// Define a function named `factorial` that, given a non-negative integer `n`,
// returns `n!`, the factorial of `n`.
//
// The factorial of `n` is defined as the product of all positive integers up to `n`.
// For example, `5!` (read "five factorial") is `5 * 4 * 3 * 2 * 1`, which is `120`.
// `0!` is defined to be `1`.
//
// We expect `factorial(0)` to return `1`, `factorial(1)` to return `1`,
// `factorial(2)` to return `2`, and so on.
//
// Use only what you learned! No loops yet, so you'll have to use recursion!
// 定义一个名为 factorial 的函数,该函数接收一个非负整数 n,并返回 n!,即 n 的阶乘。
//
// n 的阶乘定义为从 1 到 n 所有正整数的乘积。
// 例如,5!(读作“五的阶乘”)是 5 * 4 * 3 * 2 * 1,其结果为 120。
// 0! 被定义为 1。
//
// 我们预期 factorial(0) 返回 1,factorial(1) 返回 1,
// factorial(2) 返回 2,以此类推。
//
// 只能使用你学过的内容!目前还没有学习循环,因此你必须使用递归!
/* TODO */
这不C/C++里讲递归的时候的经典函数吗,没什么难度,代码直接写了
fn factorial(n:u32)->u32{
if n==0{
1
}
else{
n*factorial(n-1)
}
}
但是代码却报错了…
一直通过不了
我寻思了半天,我就想,我这逻辑也没问题啊,哪里出问题了呢?
最后看了一下官方题解,才发现
md,要加一个pub
怎么之前也没人告诉我捏,服了(
查资料发现了这俩的区别
fn foo() |
私有函数 —— 只能在本模块内部调用 |
---|---|
pub fn foo() |
公有函数 —— 外部模块也可以调用 |
如果不加pub,那这就是一个私有函数,只能在本模块内部调用。
但是,这个模块
具体指什么呢?通过查询资料可得,模块一般指这个文件,就是这个函数所在的文件,就是一个模块,或者同样在src目录下的同一个子文件夹里,也可以作为一个模块
阅读剩余
版权声明:
作者:CN059
链接:https://www.cn059.com/2025/08/29/5%e3%80%81%e9%98%b6%e4%b9%98%e7%bb%83%e4%b9%a0.html
文章版权归作者所有,未经允许请勿转载。
THE END