Thuật toán đệ quy dưới đây:
Function dequy(a: real; n:integer);
Begin
If n = 0 then dequy:=1
Else dequy:= a* dequy (a,n-1);
End;
Trả lời:
Đáp án đúng: A
Đoạn code trên định nghĩa một hàm đệ quy `dequy(a, n)` với `a` là một số thực và `n` là một số nguyên. Hàm này tính lũy thừa bậc `n` của `a`.
Giải thích chi tiết:
- Trường hợp cơ sở (base case): Nếu `n = 0`, hàm trả về 1 (vì a^0 = 1).
- Trường hợp đệ quy (recursive case): Nếu `n > 0`, hàm trả về `a * dequy(a, n-1)`. Điều này có nghĩa là hàm nhân `a` với kết quả của việc gọi chính nó với số mũ giảm đi 1. Quá trình này lặp lại cho đến khi `n = 0`.
Ví dụ:
- `dequy(2, 3)` sẽ tính 2 * dequy(2, 2)
- `dequy(2, 2)` sẽ tính 2 * dequy(2, 1)
- `dequy(2, 1)` sẽ tính 2 * dequy(2, 0)
- `dequy(2, 0)` sẽ trả về 1
Do đó, `dequy(2, 3)` = 2 * 2 * 2 * 1 = 8, tức là 2^3.
Vậy, hàm này tính a^n.