Rust 学习笔记:编程练习(一)

Rust 学习笔记:编程练习(一)

  • [Rust 学习笔记:编程练习(一)](#Rust 学习笔记:编程练习(一))
    • [Convert temperatures between Fahrenheit and Celsius](#Convert temperatures between Fahrenheit and Celsius)
    • [Generate the nth Fibonacci number](#Generate the nth Fibonacci number)
    • [Print the lyrics to the Christmas carol "The Twelve Days of Christmas," taking advantage of the repetition in the song](#Print the lyrics to the Christmas carol “The Twelve Days of Christmas,” taking advantage of the repetition in the song)

Rust 学习笔记:编程练习(一)

Convert temperatures between Fahrenheit and Celsius

华氏度(F)与摄氏度(C)的转换公式为:F = C×1.8 + 32。

经过简单的代数变换可以得到华氏度转摄氏度的公式:C = (F - 32)÷1.8。

rust 复制代码
fn celsius_to_fahrenheit(celsius: f32) -> f32 {
    celsius * 1.8 + 32.0
}

fn fahrenheit_to_celsius(fahrenheit: f32) -> f32 {
    (fahrenheit - 32.0) / 1.8
}

fn main() {
    let celsius: f32 = 0.0;
    println!(
        "{celsius}°C 转换为华氏度是 {}°F",
        celsius_to_fahrenheit(celsius)
    );
    let fahrenheit: f32 = 212.0;
    println!(
        "{fahrenheit}°F 转换为摄氏度是 {}°C",
        fahrenheit_to_celsius(fahrenheit)
    );
}

运行结果:

Generate the nth Fibonacci number

斐波那契数列从第 3 项开始,每一项都等于前两项之和。

具体来说,设F(n)为该数列的第n项(n∈N*),则递推公式为:F(n) = F(n-1) + F(n-2)(n≥3)‌

‌初始值‌:F(0) = 0,F(1) = 1‌

rust 复制代码
fn fibonacci(i: i32) -> i32 {
    if i == 0 {
        return 0;
    }
    if i == 1 {
        return 1;
    }
    fibonacci(i - 1) + fibonacci(i - 2)
}

fn main() {
    for i in 0..=10 {
        println!("F({}) = {}", i, fibonacci(i));
    }
}

运行结果:

Print the lyrics to the Christmas carol "The Twelve Days of Christmas," taking advantage of the repetition in the song

这首歌的歌词,表面上是讲圣诞节的十二天里要做的事,看起来其实就只是一首很可爱的歌而已,好像没有什么太大的含意在里面,其实,不只是这样喔!"圣诞节的十二日"可说是一首寓意极为深远的"启蒙歌曲"。这首圣诞歌最原始是由英国的新教派所写成,由于十六世纪之后的一两百年,英格兰的国会并不承认这个教派,所以他们依法不能传教,或公开从事他们的信仰活动。在当时,身为一位新教徒可是违法的呢!被抓到之后,轻则牢狱之灾,重则被砍头或被吊死都有可能。既然如此,新教派应该如何秘密传教呢?于是,他们便写了这首歌!歌曲乍听之下跟宗教完全不相干,只是在讲十二天里要为圣诞节准备十二种礼物,其实,这十二种礼物暗示着里十二种宗教上的含义。

rust 复制代码
fn main() {
    let times = [
        "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth",
        "tenth", "eleventh", "twelfth",
    ];
    let items = [
        "a partridge in a pear tree",
        "two turtle doves",
        "three french hens",
        "four calling birds",
        "five gold rings",
        "six geese a-laying",
        "seven swans a-swimming",
        "eight maids a-milking",
        "nine ladies dancing",
        "ten lords a-leaping",
        "eleven pipers piping",
        "twelve drummers drumming",
    ];

    for i in 0..times.len() {
        print!("On the {} day of Christmas, ", times[i]);
        print!("my true love sent to me: ");
        for j in (0..=i).rev() {
            if j == 0 {
                if i != 0 {
                    print!("and ");
                }
                println!("{}. ", items[j]);
            } else {
                print!("{}, ", items[j]);
            }
        }
    }
}

运行结果:

复制代码
On the first day of Christmas, my true love sent to me: a partridge in a pear tree. 
On the second day of Christmas, my true love sent to me: two turtle doves, and a partridge in a pear tree. 
On the third day of Christmas, my true love sent to me: three french hens, two turtle doves, and a partridge in a pear tree. 
On the fourth day of Christmas, my true love sent to me: four calling birds, three french hens, two turtle doves, and a partridge in a pear tree. 
On the fifth day of Christmas, my true love sent to me: five gold rings, four calling birds, three french hens, two turtle doves, and a partridge in a pear tree. 
On the sixth day of Christmas, my true love sent to me: six geese a-laying, five gold rings, four calling birds, three french hens, two turtle doves, and a partridge in a pear tree. 
On the seventh day of Christmas, my true love sent to me: seven swans a-swimming, six geese a-laying, five gold rings, four calling birds, three french hens, two turtle doves, and a partridge in a pear tree. 
On the eighth day of Christmas, my true love sent to me: eight maids a-milking, seven swans a-swimming, six geese a-laying, five gold rings, four calling birds, three french hens, two turtle doves, and a partridge in a pear tree. 
On the ninth day of Christmas, my true love sent to me: nine ladies dancing, eight maids a-milking, seven swans a-swimming, six geese a-laying, five gold rings, four calling birds, three french hens, two turtle doves, and a partridge in a pear tree. 
On the tenth day of Christmas, my true love sent to me: ten lords a-leaping, nine ladies dancing, eight maids a-milking, seven swans a-swimming, six geese a-laying, five gold rings, four calling birds, three french hens, two turtle doves, and a partridge in a pear tree. 
On the eleventh day of Christmas, my true love sent to me: eleven pipers piping, ten lords a-leaping, nine ladies dancing, eight maids a-milking, seven swans a-swimming, six geese a-laying, five gold rings, four calling birds, three french hens, two turtle doves, and a partridge in a pear tree. 
On the twelfth day of Christmas, my true love sent to me: twelve drummers drumming, eleven pipers piping, ten lords a-leaping, nine ladies dancing, eight maids a-milking, seven swans a-swimming, six geese a-laying, five gold rings, four calling birds, three french hens, two turtle doves, and a partridge in a pear tree. 
相关推荐
苏近之4 小时前
深入理解 Rust 中的生命周期
rust
高峰君主13 小时前
WebAssembly全栈革命:在Rust与JavaScript之间构建高性能桥梁
javascript·rust·wasm
爱的叹息1 天前
解决 Dart Sass 的旧 JS API 弃用警告 的详细步骤和解决方案
javascript·rust·sass
Python私教1 天前
Rust:安全与性能兼得的现代系统编程语言
java·安全·rust
CF14年老兵1 天前
当 JavaScript 遇上 Rust/Go:一场 “速度诱惑” 下的生态保卫战
前端·javascript·rust
苏近之1 天前
不要害怕 Rust 中的指针
rust·源码阅读
UestcXiye2 天前
Rust 学习笔记:Rust 简介
rust
若愚67922 天前
前端与Rust后端交互:跨越语言鸿沟 (入门系列三)
前端·rust·交互
寻月隐君2 天前
Rust实战:打造高效字符串分割函数
后端·rust·github