是否存在递归到迭代或反之亦然的算法,具有最有效的输出和尾递归?
更好的语言是C#。
例如:在输入时,这个算法得到下一个简单的函数:
public static ulong Factorial(ulong n)
{
return n == 0 ? 1 : n * Factorial(n - 1);
}
处理后返回如下:
public static ulong Factorial(ulong n)
{
ulong result = 1;
for (ulong i = 1; i <= n; i++)
result = result * i;
re
要找到这个特殊的校验和,我们需要对输入的数字求和,然后乘以2。通过使用循环找到余数就足够简单了。 如果结果小于10,则为该数字的校验和。如果它是10或更高,我们需要再做一次,直到结果小于10。 如果它陷入无限循环,比如输入18,则返回-1。 这就是我到目前为止所知道的: public int getChecksum(int input, int previous) {
int sum = 0;
while (input > 0) {
sum += input % 10;
input /= 10;
我对我正在处理的问题中自上而下的要求感到有点困惑.
这是一个算法问题,所以我将使用伪码。假设我们有一个排序数组的算法--长度为n的。排序算法有一个函数buildMaxHeap,它在发生其他事情之前将数组转换为堆:
HeapSrt(A){
A.buildMaxHeap() // turn array A into a maxheap
for i = A.length-1 to 0
swap(A, 0, i)
A.siftDwn(0)
}
其中buildMaxHeap是自下而上的迭代函数:
A.buildMaxHeap(){
for i = (n-1)/2 to 0
在处理一个问题时,我创建了两个方法,迭代和递归,用于遍历链接列表,然后比较每个方法完成所用的时间。
我正在尝试打印一个链接列表,其中包含指定范围(从0到1000000)中的任意整数(从0到99),但是当我试图使用我的printRecursively函数递归地打印列表的数字时,我会得到一个堆栈溢出错误。我的迭代方法工作得很好,但是当我使用另一种方法时,我不知道为什么总是会出现堆栈溢出错误。帮助?谢谢
public class Compare {
/**
* @param args the command line arguments
*/
public static void main
我有以下两个相互递归的函数,
由于Python不能很好地处理尾调用优化,所以程序员应该将这些函数表示为有状态循环。Python社区使用什么技术将这类方程转换为显式循环?
还是这些转换依赖于算法和每个递归函数必须分开分析?
递归实现
那就让C1 = xpa, C2 = p and C3 = xpb
def obaraSaika(p,s00x,i,j,xpa,xpb):
if i < 0 or j < 0: return 0
if i == 0 and j == 0: return s00x
if i >= 1: return xpa*(o
你觉得这段代码怎么样?这是一个在C中快速排序的实现,但我不确定它的质量和正确性。
#include <stdio.h>
void swap(int tab[], int a, int b)
{
int temp = tab[a];
tab[a] = tab[b];
tab[b] = temp;
}
void quickSort(int tab[], int begin, int end)
{
int left = begin-1;
int right = end+1;
const int pivot = tab[begin];
if(begin