Consider the following function:
4 phương ánCó giải thích
int fun(int n)
{if (n < 0)
return(fun(-n));
else if(n<4)
return(2);
else
return(n*fun(n/2));
}What values of n are directly handled by the stopping (base) case?
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: "n >= 0 && n<4". Hàm có ba nhánh: n âm thì gọi lại chính nó với -n, n nhỏ hơn 4 thì trả về 2 ngay, còn lại trả về n nhân fun(n/2). Chỉ nhánh giữa kết thúc mà không sinh thêm lời gọi nào nên đó là trường hợp dừng; nhưng nhánh ấy chỉ tới được khi điều kiện n âm đã sai, nghĩa là n không âm. Ghép hai điều đó thì những giá trị được trường hợp dừng xử lý trực tiếp đúng là n từ 0 tới 3. Điều kiện "n < 0" là một nhánh đệ quy: với n âm hàm còn phải gọi fun(-n) rồi mới có cơ hội dừng. Điều kiện "n < 4" bao cả số âm, mà số âm phải đi qua lời gọi đổi dấu trước đã nên không được xử lý trực tiếp. Điều kiện "n > = 4" là nhánh nhân rồi chia đôi, càng không phải chỗ dừng vì nó luôn sinh thêm một lời gọi nữa.
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