30/09/2018, 16:15
Hàm có tham số nhận vào là một hàm khác
Mình là newbie. Cho mình hỏi, bài này là dùng hàm có tham số là hàm để tính nhiều phương trình cùng lúc. Trong trường hợp này là dành cho các phương trình có điểm chung là có nghiệm duy nhất trên đoạn (a; b).
Tuy nhiên, ở dòng gọi hàm phía dưới, tại sao khi gọi hàm Func1 thì lại không có tham số?
Dòng có làm dấu phía dưới.
x = Solve(Func1, -1, 0); //Dòng này cần xem, Func không có tham số
Toàn bộ code
double Func1(double x)
{
return pow(x,5) + 7*x + 1; //Hàm x^5 + 7x +1
}
double Func2(double x)
{
....
//Ttự nhưng với ptr khác
}
double Solve(double F(double x), double a, double b)
{
double left = a, right = b;
while(right-left > Epsilon)
{
double mid = (left+right)/2;
if(F(left)*F(mid) < 0) //gọi hàm F trong hàm Solve
right = mid;
else
left = mid;
}
return (left+right)/2;
}
void main()
{
double x;
x = Solve(Func1, -1, 0); //Dòng này cần xem, Func không có tham số
cout << x;
x = Solve(Func2, 2, 0); //Ttự
....
}
Bài liên quan





vì trong hàm solve đã có x rồi :)))
Có đâu bạn, hình như hàm F chỉ nhận giá trị từ hai tham số a và b, chứ không đưa vào giá trị nào liên quan cho hàm Solve nên ko cần tham số? Mình cứ nghĩ gọi hàm mà ko có tham số sẽ bị lỗi?
trong solve có “double F(double x)”
Em hiểu cái dòng khai báo sau chỉ là khai báo thôi nhé
Nó có nghĩa là hàm
Solvesẽ nhận vào một hàm là hàmF. Thêm nữa, hàmFcó cấu trúc như sauChấm dứt.
Khi em gọi hàm
Solveở dưới, thì em đã truyền địa chỉ của hàmFunc1hoặcFunc2vào. Cả hai hàm này thỏa mãn được cái khai báo ở trên. Tức là có cấu trúc tương tự như hàmFlà tham số của hàmSolveBên trong hàm
Solveta sẽ gọi lại hàmF. Ở đây, ta thực sự gọi cái địa chỉ của hàmF. Nếu em truyềnFunc1vào thìFlàFunc1. Tương tự vớiFunc2.Ở đây, em mới bắt đầu truyền tham số vào hàm
F, tức là hàmFunc1hoặcFunc2Đến thời điểm này thì em mới thực sự truyền
xvào cho hàmFunc1hoặcFunc2.Trước đó, em chỉ có được địa chỉ của hàm F mà thôi. Em không cần, chính xác hơn, chưa cần phải truyền X vào. Tại thời điểm đó hàm Solve chỉ cần biết được đâu là địa chỉ của hàm F. Còn tham số gì sẽ truyền vào sau.