Crane
Table_bottom

Search
Loading
Table_bottom

分类
Table_bottom

随机文章
Table_bottom

标签云
Table_bottom

最新评论
Table_bottom

链接
Table_bottom

功能
Table_bottom

求三个参数中最大两个的平方和

Crane posted @ 2009年10月31日 23:25 in Programing with tags c 编程 , 4331 阅读

看到一题,实现一个函数,求三个函数中最大的两个参数的平方和。

很自然的,想到这样的方法:

int sum_square_largest(int x, int y, int z){

    if(y > x && z > x){
        return y * y + z * z;
    }

    if(x > y && z > y){
        return x * x + z * z;
    }

    if(x > z && y > z){
        return x * x + y * y;
    }
}
但是可以看到中间的判断都是相似的,由此可就得一更简洁的方法,使用递归。
int sum_square_largest(int x, int y, int z){

    if (x <= y && x <= z){
        return y * y + z * z;
    }

    return sum_square_largest(y, z, x);
}
由于这里是尾递归,gcc优化会识别出这个,然后自动调整堆栈,不会出现函数开销在堆栈上花费很多时间资源的情况。

 
 

 

 

 

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter