Consider the following function:
4 phương ánCó giải thích
int fun(int a, int n)
{ if(n == 0) return(1);
int t =fun(a,n/2);
if(n%2==0)
return(t*t);
else
return(t*t*a);
}For the call fun(3, 3), how many calls to fun will be made, including the original call?
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: "3". Mỗi lời gọi chỉ sinh đúng một lời gọi con với tham số n/2 chia nguyên, và dừng khi n bằng 0, nên số lời gọi bằng số lần chia 3 cho 2 để về 0, cộng thêm lời gọi ban đầu. Chuỗi cụ thể: fun(3, 3) gọi fun(3, 1) vì 3/2 = 1; fun(3, 1) gọi fun(3, 0) vì 1/2 = 0; fun(3, 0) gặp n == 0 nên trả 1 ngay và không gọi thêm. Đếm cả lời gọi đầu tiên được 3. "2" dừng đếm ở fun(3, 1), quên rằng 1 vẫn chưa phải điều kiện dừng nên còn một lời gọi nữa. "8" là 2 lũy thừa 3, tức số lời gọi của một hàm mỗi lần sinh hai lời gọi con qua ba mức; hàm này chỉ sinh một lời gọi con mỗi lần. "9" là 3 nhân 3, một kết quả trung gian của phép lũy thừa chứ không phải số lời gọi, và giá trị hàm trả về ở đây còn là 27.
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