First, replace x→yz then
f(f(z)+1)=yzf(yz+f(y)),∀y,z>0.(1)
In (1), continue to set z=1 and set f(f(1)+1)=c, we have f(y1+f(y))=cy for all y>0. The right-hand side takes on any values on R+, so the function f(y) is surjective on R+.
Now suppose that there exists 0<y1<y2 such that f(y1)<f(y2). We choose z0 such that
y1z0+f(y1)=y2z0+f(y2)⟺z0=y1y2y2−y1f(y2)−f(y1)>0.
In (1), replace z=z0 and let y=y1,y=y2 respectively, we have
f(f(z0)+1)=y1z0f(y1z0+f(y1))=y2z0f(y2z0+f(y2)).
Base on the choice of z0, we have
f(y1z0+f(y1))=f(y2z0+f(y2)),
it follows that y1=y2. This contradiction shows that with 0<y1<y2, there must be f(y1)≥f(y2) so f is a non-increasing function. Thus, f is both surjective and monotone on R+ so it will be continuous on R+. Since f is continuous and non-increasing, there exists limx→+∞f(x)=c≥0. However, if c>0 then f(x)≥c>0, ∀x∈R+, which contradicts surjectiveness. Therefore c=0.
Finally, in the given condition, for each x>0, given y→+∞ then f(f(xy)+1)→f(1) and f(x+f(y))→f(x). These imply that f(1)=xf(x) or f(x)=xc with c=f(1)>0. It is easy to check that this function satisfies the problem. □