数据求解

来源:百度知道 编辑:UC知道 时间:2024/06/17 22:41:29
int func(int m,int n){
int p;
if(m<n){p=m;m=n;n=p;}
if(n==0) return m;
return func(n,m%n);
}
根据上面的定义,func(64,96)=___________
怎么得到的?好的话加给你满意的分!
96除64余数不是1吗??

递归取余数
模拟下吧

结果是32?

第一次 m=96 n=64
第二次 m=64 n=32 m%n=0 返回m=32

[补充]
96 / 64 = 1
96 % 64 = 32

也就是: 96÷ 64 = 1.....32
除数 被除数 商 余数

递归调用啊!!!
if(m<n){p=m;m=n;n=p;}
这句话是要使func(int,int)的两个参数前一个大于后一个,但还是前一个m,后一个n
return func(n,m%n);
这是递归的部分了,把原来的n换到前面去,后一个参数取m/n的余数。
然后不停像这样,直到后面的m/n的余数等于0,就返回m了。