Algorithm that finds the number of simple paths from $s$ to $t$ in $G$
Your current implementation will compute the correct number of paths in a DAG. However, by not marking paths it will take exponential time. For example, in the illustration below, each stage of the DAG increases the total number of paths by a multiple of 3. This exponential growth can be handled with dynamic programming.

 

Computing the number of $s$-$t$ paths in a DAG is given by the recurrence, 
$$\text{Paths}(u) = \begin{cases} 
    1 &amp; \text{if } u = t \\
    \sum_{(u,v) \in E} \text{Paths}(v) &amp; \text{otherwise.}\\
\end{cases}$$

A simple modification of DFS will compute this given as

def dfs(u, t):
    if u == t:
        return 1
    else:
        if not u.npaths:
            # assume sum returns 0 if u has no children
            u.npaths = sum(dfs(c, t) for c in u.children)
        return u.npaths


It is not difficult to see that each edge is looked at only once, hence a runtime of $O(V + E)$.