Consider the following function:
5 phương ánCó giải thích
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(5)?
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: "10". Hàm có ba nhánh: n âm thì đổi dấu rồi gọi lại, n nhỏ hơn 5 thì trả 2, còn lại trả n nhân fun(n-2). Với n = 5: 5 không âm và cũng không nhỏ hơn 5, nên vào nhánh cuối và cần fun(3); 3 nhỏ hơn 5 nên fun(3) = 2 và dừng tại đó. Vậy fun(5) = 5 × 2 = 10. "2" chính là giá trị của fun(3), tức dừng ở lời gọi con mà quên nhân với 5. "5" đòi fun(3) phải bằng 1, nhưng nhánh dừng của hàm trả 2 chứ không trả 1. "4" là 2×2, như thể cả fun(5) và fun(3) đều rơi vào nhánh dừng, trong khi 5 không nhỏ hơn 5. "12" không phải bội của 5, mà phép cuối bắt buộc là 5 nhân với kết quả của fun(3), nên mọi giá trị trả về đều phải chia hết cho 5.
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