The thought is direct forward:

Call the helper function for each possible combination of first two numbers.

While in the helper function, we check whether there exists a number whose value equals to the sum of the two previous numbers. If there exists such a number, we do the recursive call to check the reminding part of the string; if such a number doesn't, the number represented by the string cannot be an additive number, we could just return false.

Deal with leading 0 cases.
But I'm not very clear with the time complexity. Would anyone help me?
public boolean isAdditiveNumberHelper(String num, int cur, long pre1, long pre2) {
if(cur==num.length())
return true;
for(int i=cur; i<num.length(); i++) {
if(num.charAt(cur)=='0' && i>cur)
continue;
long curNum = Long.parseLong(num.substring(cur, i+1));
if(curNum==pre1 + pre2)
return isAdditiveNumberHelper(num, i+1, pre2, curNum);
}
return false;
}
public boolean isAdditiveNumber(String num) {
if(num==null  num.length()<3) return false;
for(int i=0; i<num.length()2; i++) {
long num1 = Long.parseLong(num.substring(0, i+1));
for(int j=i+1; j<num.length()1; j++) {
if(num.charAt(i+1)=='0' && j>i+1)
continue;
Long num2 = Long.parseLong(num.substring(i+1, j+1));
if(isAdditiveNumberHelper(num, j+1, num1, num2))
return true;
}
}
return false;
}