递归效率高
接收的变量设置为doubl或者容纳量更大的变量类型
函数的代码都是一样的,所以地址一样,在栈里的位置是不一样的
C语言运算符有优先级和结合性,但是参与运算的操作数的求值顺序并没有规定。所以这两个代码是有问题的。
第一个例子中:
return 后面的 n-- 的值肯定是n,但是n自减在这个表达式中是什么时候发生的并不确定(在return语句后肯定减1了,但也没意义了)
第二个例子:
step的参数--n的值肯定是n-1,而且在函数调用后n的值也肯定是减1了,但是由于操作数的求值顺序未定,所以不能保证肯定先调用step函数。
这两个代码的行为都是未定义的,能出运算结果不一定代表这就是“正确的”结果。