Suppose the h(n) function is defined on the set of integer numbers as below. For the call h(3), how many calls to h will be made, including the original call?
4 phương ánCó giải thích
int h(int n)
{if (n == 0 || n==1)
return(1);
else
return(h(n-1)+h(n-2));
}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: "5". Hàm dừng khi n bằng 0 hoặc 1, còn lại tự gọi hai lần với n-1 và n-2, nên phải đếm từng lời gọi chứ không phải từng giá trị khác nhau của n. Mở cây lời gọi cho h(3): h(3) gọi h(2) và h(1); h(2) lại gọi h(1) và h(0); h(1) và h(0) là trường hợp cơ sở nên không gọi thêm. Liệt kê ra có h(3), h(2), h(1) sinh từ h(3), h(1) sinh từ h(2) và h(0), cộng cả lời gọi gốc là 5. Vì vậy "2" sai vì nó chỉ đếm hai lời gọi con trực tiếp của h(3); "3" sai vì nó đếm theo đối số khác nhau là 3, 2, 1 và bỏ qua việc h(1) bị gọi tới hai lần ở hai nhánh khác nhau cùng với h(0); "4" sai vì nó bỏ đúng một trong hai lần gọi h(1), và đây chính là chỗ làm đệ quy kiểu Fibonacci tốn kém: cùng một đối số bị tính lại nhiều lần.
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