Consider the following function:
4 phương ánCó giải thích
void fun(int n)
{if(n > 0)
{ n = n/5;
fun(n);
System.out.print(" " + n);
}
}What is the output when the statement fun(23); 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: "0 4". Trong thân hàm, n bị gán lại bằng n/5 trước khi gọi đệ quy, và lệnh in đứng sau lời gọi nên mỗi tầng chỉ in khi đã quay về, lại in giá trị n đã bị chia. fun(23) đổi n thành 4 rồi gọi fun(4); fun(4) đổi n thành 0 rồi gọi fun(0); fun(0) không vào thân vì điều kiện n lớn hơn 0 sai. Trên đường quay về, tầng của fun(4) in 0 rồi tầng của fun(23) in 4. Dãy "4 0" là thứ tự in khi đặt lệnh in trước lời gọi đệ quy, lúc đó 4 ra trước 0. Dãy "4 1" dùng 1 thay cho 0, nhưng 4 chia 5 trong phép chia nguyên bằng 0 chứ không phải 1. Dãy "1 4" sai cả giá trị lẫn thứ tự, nó giả định tầng sâu in 1 rồi tầng ngoài in 4, trong khi tầng sâu giữ n bằng 0.
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