tail-recursion

    0热度

    1回答

    我有这段代码,基本上尾巴的文件。 该文件每秒填充近100个条目。 open (MYFILE, 'output.txt'); for (;;) { while (<MYFILE>) { chomp; my $test=$_; if ($test =~ m/^ok/) { $passed++; prin

    6热度

    2回答

    尾递归我编写3种因子算法: 首先,我希望通过堆栈溢出失败。没问题。 二,我试试尾部recusive调用,将以前的算法从递归转换为迭代。 它不起作用,但我不明白为什么。 三,我用trampoline()方法,工作正常,正如我所料。 def factorial factorial = { BigInteger n -> if (n == 1) return 1 n * fact

    0热度

    2回答

    我正在写一个函数,它接受一个列表并返回列表中所有项目的平方和。称为上(1 2 3)它应该返回14:(1 + 2 + 3 )。 我有这个sqsum功能: (define (sqsum lis) (if (null? lis) 0 (+ (* (car lis) (car lis)) (sqsum (cdr lis))) ) ) 这是尾递归?我认为这是

    4热度

    1回答

    我最初试着写这个而不是尾递归,因为根据http://www.erlang.org/doc/efficiency_guide/myths.html BEAM自己做。它的工作原理,我只是想知道我的代码是否过于丑陋/效率低下。有识字的程序http://en.literateprograms.org/Selection_sort_%28Erlang%29似乎比我的版本简洁一点,但我觉得我的太多params

    59热度

    2回答

    我最近发现一个演示约F# for Python programmers,并观看后,决定实施一个解决方案,我自己的“蚁族之谜”。 没有可走动在平面网格的蚂蚁。蚂蚁可以一次向左,向右,向上或向下移动一个空间。也就是说,从细胞(x,y),蚂蚁可以进入细胞(x + 1,y),(x-1,y),(x,y + 1)和(x,y-1)。蚂蚁无法进入x和y坐标的数字总和大于25的点。例如,点(59,79)是不可访问的

    0热度

    1回答

    对于Scheme而言,尝试使函数为(在f x中),u是整数,x是列表和f二元函数。方案表达式(in + 3'(1 2 3))应该返回3 + 1 + 2 + 3 = 9。 我有这个,但如果我这样做(在+ 3'(1 2))它返回3而不是6.我做错了什么? (define (in f u x) (define (h x u) (if (null? x) u (

    -1热度

    3回答

    RecursiveSort::RecursiveSort(int myArray[], int first, int arraySize) { int smallest = first, j; if (smallest < arraySize) { smallest = first; for (j=first+1; j<arraySize;

    0热度

    2回答

    我希望看到尾递归优化的影响,并希望以尾递归优化方式编写简单的阶乘函数。 是否有可能在没有编译器支持的代码中执行此操作?

    -4热度

    1回答

    这是一个有限状态机: private int recursive(int rc, int pc, int sc) { for (;;) { Instruction actual = program[rc][pc]; switch (actual.type) { case FIRST: if (sc >= input.length ||

    0热度

    3回答

    代码,以确定名单的纬度元素: @tailrec def last_rec[A](list : List[A]) : A = { list match { case (x :: Nil) => x case (_ :: xs) => last_rec(xs) case Nil => throw new NoSuchElementExceptio