Consider the following function:
4 phương ánCó giải thích
void fun(int n)
{System.out.print(" " + n % 5);
fun(n/3);
}What will happen if the statement fun(21); 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: "The run-time stack overflows, halting the program". Hàm fun không có nhánh dừng nào: với n = 21 nó in 21%5 = 1 rồi gọi fun(7) in 2, gọi fun(2) in 2, rồi gọi fun(0); từ đó 0/3 vẫn bằng 0 nên fun(0) tự gọi fun(0) mãi mãi, mỗi lời gọi chiếm thêm một khung trên ngăn xếp cho tới khi máy ảo hết vùng ngăn xếp, ném StackOverflowError và chương trình dừng. Phương án "The operating system detects the infinite recursion because of the 'repeated state'" sai vì không hệ điều hành nào theo dõi việc tham số lặp lại trạng thái; máy ảo chỉ biết ngăn xếp đã chạm giới hạn chứ không nhận ra n đứng mãi ở 0. "The program keeps running until you press Ctrl-C" sai vì chương trình tự chết do tràn ngăn xếp sau hữu hạn lời gọi, không cần người dùng ngắt. "The results are nondeterministic" sai vì cả dãy in ra lẫn thời điểm vỡ đều xác định: cùng một giới hạn ngăn xếp luôn cho cùng một kết quả.
Cùng phần 3
Consider the following function:
void fun(int n)
{if(n > 0)
{System.out.print(" " + n );
fun(n-2);
}
}
What is the output when the statement fun(9); is run?Có lời giảiCâu hỏiConsider the following function:
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ó 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