Put x = 0 and we get f(yf(0)) = 0. If f(0) ≠ 0, then yf(0) takes all real values when y varies over real line. We get f(x) ≡ 0. Suppose f(0) = 0. Taking y = -x, we get f(x2 - xf(x)) = 0 for all real x.
Suppose there exists x0 ≠ 0 in R such that f(x0) = 0. Putting x = x0 in the given relation we get
f(x20) = x0f(x0 + y);
for all y ∈ R. Now the left side is a constant and hence it follows that f is a constant function. But the only constant function which satisfies the equation is identically zero function, which is already obtained. Hence we may consider the case where f(x) ≠ 0 for all x ≠ 0.
Since f(x2 - xf(x)) = 0, we conclude that x2 - xf(x) = 0 for all x ≠ 0. This implies that f(x) = x for all x ≠ 0. Since f(0) = 0, we conclude that f(x) = x for all x ∈ R.
Thus we have two functions: f(x) ≡ 0 and f(x) = x for all x ∈ R.