pub fn hanoi(n: u32, from: char, to: char, aux: char) -> Vec<(char, char)>Expand description
Hanoy minoralari: n ta diskni from ustunidan to ustuniga ko’chirish qadamlari.
Qoidalar: bir vaqtda bitta disk; katta disk kichigining ustiga qo’yilmaydi.
Rekursiv g’oya (3 qadam):
- Yuqoridagi
n-1diskni yordamchi ustunga ko’chir; - Eng katta diskni maqsad ustunga qo’y;
n-1diskni yordamchidan maqsadga ko’chir.
- Qadamlar soni:
2ⁿ − 1— bundan kamiga iloji yo’q (isbotlangan).
§Misol
use rust_algorithms::other::recursion::hanoi;
let qadamlar = hanoi(3, 'A', 'C', 'B');
assert_eq!(qadamlar.len(), 7); // 2³ − 1
assert_eq!(qadamlar[0], ('A', 'C'));