自己写的代码会写了,还是太渣,复杂度什么的直接报表

原题目是这样子的,本人按照一贯的作风想得很简单

#include<iostream>
using namespace std;
void H(int n)
{
    while (n > 1)
    {
        if (n % 2 == 0) //这一步把取余和除法弄混淆。
        {
            cout << n << " ";
            n = n / 2;
        }
        else
        {
            cout << n << " ";
            n = 3 * n + 1;
        }
    }
    if (n == 1)
        cout << n << " ";
}
int main2()
{
    H(42);
    return 0;
}

可是人家直接用了一个三目运算符直接取代if else 了,简直妙不可言

#include<iostream>
using namespace std;

int hailstone(int n)
{
    int length = 1;
    while(n>1)
    {
        
        (n % 2) ? n = 3 * n + 1 : n = n/ 2 ;
        length++;
    }
    return length;

}
int main()
{
    cout << hailstone(423232)<<endl;
    system("pause");
    return 0;
}

但是这两个的复杂度是一模一样的  震惊,就算是给自己代码简洁的一种方法吧

 

posted @ 2017-09-12 21:54  小陈同学啦  阅读(282)  评论(0编辑  收藏  举报