gpt4 book ai didi

java - 递归排列(计数规则)

转载 作者:行者123 更新时间:2023-12-02 10:56:37 24 4
gpt4 key购买 nike

我查了一堆问题,没有找到这个。我需要编写一个返回排列 P(N,K) 的递归方法。意思是,池里有 20 个物体,画 3 个,你画它们的顺序有多少种可能性?答案是20*19*18。

这是我到目前为止所得到的:

public double perm(long N, long K)

{
if (K == 1)
return N;
else
return perm((N*(N-1)), (K-1));
}

N 是池数,K 是拉取次数。我的问题是弄清楚如何使“N*(N-1)*(N-2)...”位起作用。假设我这样做:

烫发(10,3)

第一次执行我得到的代码后,N 将是 10*9 或 90,这意味着在第二次循环中,它将计算 90*89,而不是 (10*9)*8 。我不知道这是如何工作的,但教授分配了它,所以它一定是可能的。

我可以使用 FOR 循环轻松完成此操作,但它不能是 for 循环。我真的不想要解决方案,只是一些指导。谢谢!

最佳答案

您正在对乘法结果进行递归(这是一个单词吗?)。

返回 perm((N*(N-1)), (K-1));

此处,N*(N-1) = 90(N 最初为 10),因此结果为 perm(90), k-1)

您应该将 P(N-1, K-1) 的结果与 N 相乘,如下所示:

N * P(N-1, K-1)

关于java - 递归排列(计数规则),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51681250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com