来我们一块儿握个手

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

题目以下:面试

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


解题思路:

从这张表格能够得出来的规律是:算法

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

至关于求进行求和操做了。bash


java代码app

方法一:遍历求和学习

/**
   * 遍历求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;
  }
复制代码

方法二:递归求和ui

递归,是比较经常使用的算法之一;所谓递归,就是本身调用本身,可是递归不会无休止的执行,必需要有一个明确出口(递归出口),当知足递归结束条件时递归程序就会中止运行,否则就会出现死循环;spa

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

方法三:code

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

打完收工,你们以为还有更高级的解法,也能够留言告诉做者,你们相互学习借鉴一下。
orm

相关文章
相关标签/搜索