目前,我正在做一个递归赋值,我需要计算情侣之间握手的次数。在这个由N对情侣组成的聚会中,只有一个性别(男性或女性)可以主动与每个人握手。示例如下:

到目前为止,这是我的递归方法,我真的被困在这里了,你们能帮我吗
public int solve(int n){
if(n==1){
return 0;
} else{
return ((n*2)-2)+solve(n-1);
}
}发布于 2020-10-15 09:32:13
我将按照图中所示,假设女性是发起握手的人。
假设我们有N对情侣:
第一对中的雌性会与其他每一对雌性握手,结果是N-1次握手。来自第一对夫妇的雌性将与每一个不是她自己的伴侣的男性握手,结果是N-1握手。第一对夫妇中的男性将与其他女性握手,结果是N-1次握手。第一对中的雄性不会与任何一对雄性握手,因为他们不能主动握手。
因此,第一对组合贡献的总抖动次数是3(N-1)。然后,您可以递归到下一对,传入N-1作为参数,因为第一对握手已经被计算在内。诸若此类。
结果是:
public int solve(int n){
if(n <= 1) return 0;
return 3 * (n - 1) + solve(n-1);
}https://stackoverflow.com/questions/64363448
复制相似问题