Consider the following function:
5 phương ánCó giải thích
void fun(int n)
{if(n > 0)
{System.out.print(" " + n % 5);
fun(n/3);
}
}What is the output when the statement fun(17); 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: "2 0 1". Hàm in trước rồi mới gọi đệ quy, nên các số dư hiện ra theo chiều đi xuống: fun(17) in 17%5 = 2 rồi gọi fun(17/3) = fun(5); fun(5) in 5%5 = 0 rồi gọi fun(5/3) = fun(1); fun(1) in 1%5 = 1 rồi gọi fun(0), và fun(0) dừng vì điều kiện n lớn hơn 0 không còn đúng. Chuỗi in ra vì vậy là 2 0 1. Dãy "2 1" bỏ mất bước fun(5), tức coi 17/3 bằng 1 thay vì 5. Dãy "2 2 1" lấy số dư theo cơ số 3 ở bước giữa vì 5%3 = 2, trong khi lệnh in dùng cơ số 5. Dãy "2 1 2" đảo thứ tự, nhưng lệnh in đứng trước lời gọi đệ quy nên số dư của n lớn nhất phải ra đầu tiên. Dãy "3 1 1" bắt đầu bằng 17/5 = 3 chứ không phải 17%5 = 2, tức lẫn giữa phép chia và phép lấy dư.
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:
int fun(int n)
{if (n < 0)
return(fun(-n));
else if(n<5)
return(2);
else
return(n*fun(n/2));
}
What is the value of fun(-3)?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