I did not find good answer, so let me try to answer it.
DFS, Depth First Search is brute-force, basically explores every single possiblity, it can go to the very leaf node in call-tree. It is simple thing. We can make slight changes in DFS, and create different Algorithms.
Backtracking is modification of DFS. What makes it Backtraking is our ability to reject the solution early instead of going to the very end. This is why it is called Backtracking, because we are continuously coming back mid-way when we reject a solution early.
Examples are N-Queens and Sudoku. Note that we don't have to put all the N-Queens on Board to see if a solution is not-valid, we can do that early. Same with Sudoku.
(personal opinion)
We natually do not return our solution through return statement in Backtracking,(but we can), we develop it in the States, and might use the return statement to convey completeness-status(True/False) of our solution.
In Backtracking, we (generally) maintain a State that is shared across all the function calls and are continuously "making changes" to the state, e.g. ChessBoard in N-Queens and Board in Sudoku. DFS and Backtracking have similar code template.
DP without memoization is also just DFS. It also attempts to explore all possiblities. What makes it DP, is overlaping subproblems, so that we can use already computed values and avoid recomputing same things. In DP don't attempt to find "all solutions", we just want an optimum one. Like maxValue in Knapsack, which is just an integer value; in contrast with Sudoku or PowerSet.
So it is easy to return the answer in DP problems through return statement because it is natural to do so, we are not building up a solution like in Sudoku or PowerSet, we just need one integer ans. We use subproblem to compute currentSolution. DP problems have clear induction-hypothesis about how the subproblems can be used to compute currentSolution; Backtracking do not have this property. (If you exploit hard enough, even Sudoku-Backtracking can have induction-hypothesis, but it is not natural)
Sumarry
If it requires to explore all possiblities, it involves DFS.
If early rejection is possible, it is Backtracking.
If there is Overlaping Subproblems and Optimal Substructure Property, then we can improve brute-force DFS's performance using DP. If we have these two properties, then the function must have a clear induction-hypothesis
Optimal Substructure Property: Ability to use Subproblems to compute current solution
Hope it helps.