Prove that: there exists only one function $f:\mathbb{N^*}\to\mathbb{N^*}$ satisfying:
i) $f(1)=f(2)=1$; 
ii)$f(n)=f(f(n-1))+f(n-f(n-1))$ for $n\ge 3$.
For each integer $m\ge 2$, find the value of $f(2^m)$.
1. **Base Case Verification:**
   We start by verifying the base case for \( n = 2 \):
   \[
   f(1) = 1 \quad \text{and} \quad f(2) = 1
   \]
   These satisfy the initial conditions given in the problem.

2. **Inductive Hypothesis:**
   Assume that for all \( 2 \le n < N \), the following properties hold:
   \[
   f(n) - f(n-1) \in \{0, 1\} \quad \text{and} \quad \frac{n}{2} \le f(n) \le n
   \]

3. **Inductive Step:**
   We need to show that these properties hold for \( n = N \):
   \[
   f(N) - f(N-1) = f(f(N-1)) - f(f(N-2)) + f(N - f(N-1)) - f(N-1 - f(N-2))
   \]
   Since \( f(N-1) \le N-1 < N \) and \( f(N-2) \le N-2 < N-1 \), and by the inductive hypothesis \( f(N-1) - f(N-2) \in \{0, 1\} \), we consider two cases:

   - **Case 1: \( f(N-1) = f(N-2) \)**
     \[
     f(f(N-1)) = f(f(N-2))
     \]
     \[
     f(N - f(N-1)) - f(N-1 - f(N-2)) = f(N - f(N-1)) - f(N - f(N-1) - 1) \in \{0, 1\}
     \]
     Thus, \( f(N) - f(N-1) \in \{0, 1\} \).

   - **Case 2: \( f(N-1) = f(N-2) + 1 \)**
     \[
     f(N - f(N-1)) = f(N-1 - f(N-2))
     \]
     \[
     f(f(N-1)) - f(f(N-2)) = f(f(N-2) + 1) - f(f(N-2)) \in \{0, 1\}
     \]
     Thus, \( f(N) - f(N-1) \in \{0, 1\} \).

   Therefore, \( f(N) - f(N-1) \in \{0, 1\} \). Since \( f(N-1) \le N-1 \), it follows that \( f(N) \le N \).

4. **Bounding \( f(N) \):**
   \[
   f(N) = f(f(N-1)) + f(N - f(N-1)) \ge \frac{f(N-1)}{2} + \frac{N - f(N-1)}{2} = \frac{N}{2}
   \]
   Hence, \( \frac{N}{2} \le f(N) \le N \).

5. **Uniqueness:**
   The function \( f \) is uniquely determined by the recurrence relation and initial conditions.

6. **Finding \( f(2^m) \):**
   We claim \( f(2^m) = 2^{m-1} \) for all \( m \in \mathbb{N} \). We use induction on \( m \):

   - **Base Case:**
     For \( m = 1 \):
     \[
     f(2^1) = f(2) = 1 = 2^{1-1}
     \]

   - **Inductive Step:**
     Assume \( f(2^k) = 2^{k-1} \) for all \( 1 \le k < M \). We need to show \( f(2^M) = 2^{M-1} \).

     For all \( 2^{M-1} \le n < 2^M \), we have \( f(n) \le 2^{M-1} \). We proceed by induction on \( n \):

     - If \( n = 2^{M-1} \), it is clear.
     - Assume it is true for \( n \), we show it for \( n+1 < 2^M \):
       \[
       f(n) \le 2^{M-1}, \quad n+1 - f(n) \le \frac{n+2}{2} \le 2^{M-1}
       \]
       Thus, \( f(n+1) \le f(2^{M-1}) + f(2^{M-1}) = 2^{M-1} \).

     Now, \( f(2^M - 1) \le 2^{M-1} \) and \( f(2^M - 1) \ge \frac{2^M - 1}{2} \), so \( f(2^M - 1) = 2^{M-1} \).

     Therefore,
     \[
     f(2^M) = f(f(2^M - 1)) + f(2^M - f(2^M - 1)) = 2^{M-1}
     \]

The final answer is \( \boxed{ f(2^m) = 2^{m-1} } \)