Consider the following function:

4 phương ánCó giải thích
Đề bài
void  t(int n, int base)
    {if(n>0 && base>0)
        {t(n/base, base);
          System.out.print(n%base + "  ");
        }
    }

What is the output when the statement t(100, 8); is run?

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "1 4 4". Hàm gọi đệ quy trước rồi mới in, nên các số dư bật ra theo chiều ngược: t(100, 8) gọi t(12, 8), t(12, 8) gọi t(1, 8), t(1, 8) gọi t(0, 8) và lời gọi này dừng ngay vì điều kiện n lớn hơn 0 không còn đúng. Khi quay về, t(1, 8) in 1%8 = 1, t(12, 8) in 12%8 = 4, t(100, 8) in 100%8 = 4, cho 1 4 4; đó đúng là biểu diễn cơ số 8 của 100 vì 1 nhân 64 cộng 4 nhân 8 cộng 4 bằng 100. Dãy "1 2 0" không ứng với số dư nào trong chuỗi, vì ba số dư thu được chỉ là 1, 4 và 4. Dãy "1 6 6" đọc thành 166 trong cơ số 8, tức giá trị 118, không phải 100. Phương án "None of the others." bị loại vì dãy 1 4 4 đã khớp đúng cả giá trị lẫn thứ tự in.

Cùng phần 3

Xuất hiện trong 1 bộ đề