Consider the following function:
4 phương ánCó giải thích
int fun(int n)
{if(n==0)
return(1);
else
return(n + fun(n/2));
}What is the output when the statement:
System.out.println(fun(9));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: "17". Hàm cộng n vào kết quả của fun(n/2) và dừng ở n bằng 0 với giá trị trả về 1, phép chia là chia nguyên. Chuỗi lời gọi là fun(9), fun(4), fun(2), fun(1), fun(0), nên tổng bằng 9 cộng 4 cộng 2 cộng 1 cộng 1, trong đó số 1 cuối là giá trị của trường hợp dừng. Số "16" bằng 9 cộng 4 cộng 2 cộng 1, tức quên rằng fun(0) trả về 1 chứ không phải 0. Số "18" lớn hơn kết quả đúng một đơn vị, nó đòi thêm một tầng nữa trong chuỗi chia đôi, nhưng sau fun(1) thì 1 chia 2 bằng 0 và đệ quy dừng ngay. Số "15" nhỏ hơn hai đơn vị, ứng với việc bỏ cả tầng fun(1) lẫn giá trị dừng, trong khi 1 lớn hơn 0 nên tầng ấy vẫn chạy và vẫn góp 1.
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