标签: recursion

这是怎么得到8的?

这是代码:

class qual
{
    public static int fibonacci(int n)
    { 
        if (n == 0 || n == 1) 
        { 
            return 1; 
        } 
        else 
        { 
            return fibonacci(n-1) + fibonacci(n-2); 
        } 
    } 

    public static void main(String[] arg) 
    {
        System.out.println(fibonacci(5));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是8.输出应该是8但是当我看这个时我觉得它应该是7((5-1) +(5-2)).

为什么输出8?我认为获得8后面的推理会使递归可能不再让我感到困惑.

java recursion fibonacci

-3
推荐指数
4
解决办法
587
查看次数

为什么Java不允许在构造函数中递归?

我认为允许递归有时候非常方便,不是因为我可以在"递归"中编码,而是因为我可以为某些情况保存一些代码空间,如下所示

public class SomeClass
{
   private int a;

   SomeClass(int a)
   {
      this.a = a;
   }

   SomeClass()
   {
      SomeClass(3);
   }
}
Run Code Online (Sandbox Code Playgroud)

当一个构造函数试图利用包含大块代码的另一个构造函数时,这尤其有效.

但是,Java显然不支持这个功能,我相信它并不是一个很好的理由.有人可以解释为什么吗?

java recursion constructor

-3
推荐指数
2
解决办法
4025
查看次数

连接和递归

#Calculates to the index position of a fib number.
def f3(n):
    if n < 2:
        return n
    return f3(n-2) + f3(n-1)
Run Code Online (Sandbox Code Playgroud)

该函数只接受一个参数,但在返回中发送了两个参数,但是,它有效!这里发生了什么事?

如果我返回f3(n-3),则该函数会崩溃.串联有什么影响?

python recursion operators

-3
推荐指数
1
解决办法
729
查看次数

这段代码给出了一个荒谬的答案

可能重复:
此代码中发生了什么?

我有一个包含递归函数的代码.我在递归上浪费了很多时间,但我仍然无法得到它,真的:

#include<stdio.h>

count(int);

 main(){
   int x=10,z;
   z=count(x);
}  
count(int m){
   if(m>0)
      return count(m-1);
}
Run Code Online (Sandbox Code Playgroud)

count第一次使用参数调用时10,它满足条件并且递归开始.当函数调用自身时会发生什么?我不懂.该陈述return count(m-1)是什么意思?它在哪里转移控制?

c recursion function

-3
推荐指数
1
解决办法
143
查看次数

在Haskell中使用map和递归函数

所以我正在学习如何在Haskell中编程.

我希望看到的一件事是通过使用map并使用不使用列表推导而不使用map或任何其他高阶库函数的递归,为列表的每个元素添加1.

我认为看到两种实施方式都很酷.

recursion haskell

-3
推荐指数
1
解决办法
1955
查看次数

在循环中使用递归 - 糟糕的风格?

简单的问题,我只是想知道在循环中递归调用方法是否被认为是糟糕的风格.我知道人们因为时间和空间的成本而存在递归问题,所以我认为循环和重复会被认为更加低效和昂贵.

java recursion styles loops

-3
推荐指数
1
解决办法
104
查看次数

因子函数产生错误的结果

我知道有多种方法可以计算整数的阶乘,也有一个math模块.但是我试图将一个返回错误结果的简单函数放在一起.我很想知道这里出了什么问题.例如,如果我将2作为参数传递它返回3,如果3则返回8.

>>>def factorial(n):

        if n > 0:
            result = n * n-1
            factorial(n-1)
            return result 

>>>factorial (2)

   3
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

python recursion factorial

-3
推荐指数
1
解决办法
194
查看次数

我的代码有什么问题

编写一个递归的,布尔值的方法containsVowel,它接受一个字符串,如果该字符串包含一个元音,则返回true.一个字符串包含一个元音如果:字符串的第一个字符是一个元音,或者字符串的其余部分(超出第一个字符)包含一个元音这是我的编程实验室这是我有的编译器sas有一个元音错误,它没有提供帮助.
请帮我纠正错误,谢谢.

boolean containsVowel(String s)
{ 
    if(s.containsVowel("aeiouAEIOU")) 
    {
        return true;
    }
    else 
    {
        (s.substring(!=));
        return false
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器错误

codelab分析

备注:您似乎在编译时出错

这是我之前做过的另一个问题:

编写一个递归的,int -valued方法len,它接受一个字符串并返回字符串中的字符数.如果字符串是空字符串(""),则字符串的长度为:0.比第一个字符之外的其余字符串的长度多1个.

以下是我的编程实验室正在寻找的答案:

int len(String s)
{
if(s.equals("")){
    return 0;
}
 else {
return (1+len(s.substring(1)));}
}
Run Code Online (Sandbox Code Playgroud)

java recursion

-3
推荐指数
1
解决办法
1129
查看次数

Java中的递归问题

我正在尝试获得如下所示的输出:

3
2
1
"重启"
1
2
3

:递归使用此代码:

public static void restart(int n){

    return; //fill in here 
}
Run Code Online (Sandbox Code Playgroud)

java recursion restart

-3
推荐指数
1
解决办法
88
查看次数

使用递归将基数提升到指数到指数

我目前正在尝试使用递归将基数提高到 2 的幂,然后将其提高到指数,所以它看起来像x^2^y.

这是我的代码:

def real_multiply(x:int, y:int):
    if y == 0:
        return x
    else:
        return x * real_multiply(x,(2**y)-1)
Run Code Online (Sandbox Code Playgroud)

基本情况y==02^0返回 1,输出最终是x^1,这将返回x。但是,当我运行此代码时,它会达到递归限制。

有任何想法吗?

python recursion python-3.x

-3
推荐指数
1
解决办法
1万
查看次数