C++有道题看不懂,高手帮看下

#include <iostream.h>
int func(int a,int b);
int main()
{
cout<<func(8,3)<<endl;
return 0;
}
int func(int a,int b)
{
if(b==0)return 1;
else return func(a-b,a/b);
}
输出结果为什么是1
其中b==0是什么意思?
输出结果是1,那就是(b==0)是正确的?
厄,没看懂,从哪看出b==0?

刚才把“return 1”和“return func(a-b,a/b);”换了一下。。。输出结果也是1。。。为什么会这样

如果b等于0
b=0表示给b赋值为0
b==0表示判断b是否为0,正确0返回true,不正确返回false
这道题里面func函数中的b为3,则在函数内部递归调用自己
下一层func函数中a为8-3,b为8/3,分别是5和2,b不为0
继续递归下一层a为5-2为3,b为5/2为2
继续,a为3-2为1,b为3/2为1
继续,a为1-1为0,b为1/1为1
继续,a为0-1为-1,b为0/1为0,这一层b为0作为参数穿到下一层
最后一层b为0,返回1
一层层返回上去
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-17
就是我们数学的=号啊,但在c语言里要写成==
相似回答