最近群里有小伙伴去面试,然后在群里发求助信息
题目如下:
参加会议的人两两彼此握手,有人统计一共握了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打完收工,大家觉得还有更高级的解法,也可以留言告诉作者,大家相互学习借鉴一下。