Example 9 Let $f(n)$ be a function defined on $\mathbf{N}$ taking non-negative integer values, and for all $m, n \in \mathbf{N}$ we have
$$
f(m+n)-f(m)-f(n)=0 \text{ or } 1 \text{, }
$$

and $f(2)=0, f(3)>0, f(6000)=2000$.
Find $f(5961)$.
Solve: From $0=f(2) \geqslant 2 f(1) \Rightarrow f(1)=0$;
From $f(3)-f(2)-f(1)=0$ or 1
$$
\Rightarrow 0 \leqslant f(3) \leqslant 1 \text {. }
$$

But $f(3)>0$, hence $f(3)=1$.
By the problem statement, we know
$$
\begin{array}{l}
f(3 n+3)=f(3 n)+3+0 \text { or } 1 \\
\Rightarrow f(3(n+1)) \geqslant f(3 n)+1 .
\end{array}
$$

In the above, let $n=1,2, \cdots, k$, respectively, we get
$$
\begin{array}{l}
f(3 \times 2) \geqslant f(3 \times 1)+1, \\
f(3 \times 3) \geqslant f(3 \times 2)+1, \\
\cdots \cdots \\
f(3 k) \geqslant f(3(k-1))+1 .
\end{array}
$$

Adding all the equations, we get
$$
f(3 k) \geqslant f(3)+(k-1)=k \text {. }
$$

Thus, for all natural numbers $k$,
$$
f(3 k) \geqslant k \text {. }
$$

When $k2000 .
\end{array}
$$

This contradicts the problem statement.
Therefore, $f(3 k)=k$.
Since $1987<2000$, we have
$$
f(5961)=f(3 \times 1987)=1987 .
$$