【发布时间】:2016-09-24 03:39:14
【问题描述】:
嗯,我已经尝试过多次返工。不过,有一次我认为最长的序列函数会有所帮助,因为它显示了最长的冰雹序列。虽然,我似乎无法弄清楚如何找到或存储它用来找到它的价值。如果有人能解释如何,我将不胜感激。
int longestSequence(int n)
{
int u = n;
if(u == 1)
{
return 1;
}
else
{
return max(hailstoneLength(u), longestSequence(u-1));
}
}
我遇到问题的部分是我最长的开始序列:
int hailLongestSeq(int n)
{
int k;
int longest = 0;
for(int j = 1; j <= n; j++)
{
if(hailstoneLength(j) > longest)
{
longest = hailstoneLength(j);
k = j;
}
}
return k;
}
我不确定如何将其变成递归,我注意到在一些递归中我看到人们仍在使用 for 循环,但我确信我们不应该使用循环。 这可能是一个愚蠢的问题,但是如果有人知道的话,是否有将 for 循环转换为递归的公式?
预期的输出是这样的:
以不超过 10 的数字开头的最长冰雹序列的长度为 20。 从 10 到 10 的最长冰雹序列以 9 开头。
因为 9 的序列有 20 个数字,最长的是 1 到 10。
【问题讨论】:
-
你昨天不是问过这个吗?
-
这个公式是根据子问题对问题进行改写:例如:n 次迭代的 for 循环是对 n-1 次迭代的 for 循环的迭代
-
不,我昨天没有问这个。我今天凌晨 1 点提交的