Rust Recursive Linked List to Assembly Code
pub fn factorial(n: u64) -> u64 {
if n == 0 {
1
} else {
n * factorial(n - 1)
}
}
fn fibonacci(n: u32) -> u32 {
if n == 0 {
return 0;
} else if n == 1 {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
// Singly linked list
pub struct NonEmpty<T> {
item: T,
next: Option<Box<NonEmpty<T>>>,
}
type List<T> = Option<Box<NonEmpty<T>>>;
// Sum a list
pub fn sum_list(list: &List<u64>) -> u64 {
if let Some(item) = list {
item.item + sum_list(&item.next)
} else {
0u64
}
}