Tried to shorten it a bit
Func n($0,$1,$2=1)
$0&='-('&$1&')'
For $3=0 To 10^4
$4=Execute(StringReplace($0,'x',$2))
$2-=$4/(Execute(StringReplace($0,'x',$2+1/10^9))-$4)/10^9
If IsInt($3/1000) And IsInt($3/2000)=0 Then $1=$2
If Abs($2-$1+$1=$2)=1 Then Return $2
Next
EndFunc ; 254 Byte
And for the crazy ones:
Func n($0,$1,$2=1,$3=-1,$4=0,$5=Assign,$6=StringReplace)
Return ($3=-1)?n($0&'-('&$1&')',$1,$2,0):0*$5('4' _
,Execute($6($0,'x',$2)))*$5('2',$2-$4/(Execute($6 _
($0,'x',$2+1/10^9))-$4)/10^9)*((IsInt($3/1000)And _
IsInt($3/2000)=0)?$5('1',$2):0)+Abs($2-$1+$1=$2)= _
1?$2:n($0,$1,$2,$3+1)
EndFunc ; 285 Bytes (without _)
M