gpt4 book ai didi

c - 如何用递归替换 For 循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:56 27 4
gpt4 key购买 nike

我刚刚开始使用递归编程——因为我听说它在解决问题方面有多么强大,所以我想尝试一下我几天前写的一个简单的解密算法。

我知道可能很难弄清楚每次迭代在做什么,但是递归能否使这个循环更“优雅”和“算法化”?

for (int e = 0; e < length; e++)
{
for (int d = 0; d < length; d++)
{
for (int c = 0; c < length; c++)
{
for (int b = 0; b < length; b++)
{
for (int a = 1; a < length; a++)
{
key[0] = letters[a];
key[1] = letters[b];
key[2] = letters[c];
key[3] = letters[d];
key[4] = letters[e];
if (strcmp(crypt(key, salt), hash) == 0)
{
printf("%s\n", key);
return 0;
}
}
}
}
}
}

最佳答案

如果您无需递归即可完成一项任务,那么以这种方式解决它是个好主意。如果您想了解递归,请查看一些问题,例如阶乘或斐波那契数列。这些也有迭代解决方案,但比你在这里遇到的问题更适合递归。在这种情况下,你的算法在做什么是非常清楚的,递归会使它不必要地更难理解。但是,这是您可以进行的一项改进

for (int e = 0; e < length; e++)
{
key[4] = letters[e];
for (int d = 0; d < length; d++)
{
key[3] = letters[d];
for (int c = 0; c < length; c++)
{
key[2] = letters[c];
for (int b = 0; b < length; b++)
{
key[1] = letters[b];
for (int a = 1; a < length; a++)
{
key[0] = letters[a];

if (strcmp(crypt(key, salt), hash) == 0)
{
printf("%s\n", key);
return 0;
}
}
}
}
}
}

关于c - 如何用递归替换 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52564720/

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