Consider the following function:
4 phương ánCó giải thích
void fun(int n)
{int m = n/2;
int k = n%2;
if (m > 0)
{fun(m);
}
System.out.print(k + " ");
}What is the output when the statement fun(11); is run?
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "1 0 1 1". Hàm gọi đệ quy TRƯỚC khi in, nên các chữ số dư được in theo thứ tự ngược với lúc sinh ra, đúng bằng cách đổi 11 sang hệ hai. Chạy tay: fun(11) có m = 11/2 = 5 và k = 11%2 = 1, m lớn hơn 0 nên gọi fun(5); fun(5) có m = 2, k = 1, gọi fun(2); fun(2) có m = 1, k = 0, gọi fun(1); fun(1) có m = 0, k = 1, m không lớn hơn 0 nên dừng rồi in 1. Khi các lời gọi lần lượt trở về, màn hình nhận thêm 0 của fun(2), rồi 1 của fun(5), rồi 1 của fun(11), cho dãy 1 0 1 1 — chính là biểu diễn hệ hai của 11. "1 1 0 1" là dãy dư theo chiều sinh ra, chỉ xảy ra nếu đặt lệnh in trước lời gọi đệ quy. "1 0 0 1" là hệ hai của 9 và "1 0 1 0" là hệ hai của 10, đều không khớp với 11.
Cùng phần 3
Consider the following function:
void fun(int n)
{System.out.print(" " + n % 5);
fun(n/3);
}
What will happen if the statement fun(21); is run?Có lời giảiCâu hỏiConsider the following function:
void fun(int n)
{if (n < 0)
{System.out.println(“-“);
fun(-n);
}
else if(n<10)
System.out.println(n);
else
{fun(n/10);
System.out.println(n%10);
}
}
What values of n are directly handled by the stopping (base) case?Có lời giảiCâu hỏiConsider the following function:
void fun(int n)
{int m = n/2;
int k = n%2;
System.out.print(k + " ");
if (m > 0)
{fun(m);
}
}
What is the output when the statement fun(12); is run?Có lời giảiCâu hỏiCả 41 câu của chủ đề41 câu
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây