来咱们一起握个手

465 阅读1分钟

最近群里有小伙伴去面试,然后在群里发求助信息

题目如下:

参加会议的人两两彼此握手,有人统计一共握了45次手,那么到会的人数是多少人?


解题思路:

从这张表格可以得出来的规律是:

握手次数=1+2+3+4+...+(n-1)

相当于求进行求和操作了。


java代码

方法一:遍历求和

/**
   * 遍历求n
   *
   * @param n
   * @return
   */
  public static int iterableSum(int n) {
    int sum = 0;
    int count=0;
    for (int i = 0; i <n; i++) {
      sum = sum + i;
      if (sum == 45) {
        count=i+1;
        break;
      }
    }
    return count;
  }

方法二:递归求和

递归,是比较常用的算法之一;所谓递归,就是自己调用自己,但是递归不会无休止的执行,必须要有一个明确出口(递归出口),当满足递归结束条件时递归程序就会停止运行,不然就会出现死循环;

/**
   * 递归求和
   * @param n
   * @return
   */
  public static int recursion(int n) {
    int sum = 0;
    if (n == 1) {
      return 1;
    } else {
      return  n + recursion(n - 1);
    }
  }

方法三:

等差数列,套用公司求和 N*(N-1)/2 =45

打完收工,大家觉得还有更高级的解法,也可以留言告诉作者,大家相互学习借鉴一下。