相关疑难解决方法(0)

递归或迭代?

我喜欢递归.我认为它简化了很多事情.另一个可能不同意; 我认为这也使代码更容易阅读.但是,我注意到递归在C#等语言中并没有像在LISP中那样被使用(顺便提一下,这是我最喜欢的语言).

有没有人知道是否有任何好的理由不使用C#等语言的递归?它比迭代更昂贵吗?

language-agnostic iteration optimization recursion

29
推荐指数
6
解决办法
1万
查看次数

PHP中的递归与迭代

迭代因子函数:

function factorial($number) {
    $result = 1;
    while ($number > 0) {
        $result *= $number;
        $number--;
    }
    return $result;
}
Run Code Online (Sandbox Code Playgroud)

递归阶乘函数:

function factorial($number) {
    if ($number < 2) {
        return 1;
    } else {
        return ($number * factorial($number-1));
    }
}
Run Code Online (Sandbox Code Playgroud)

我必须开发一个函数来计算我的PHP程序中的factorial.我想通了我可以在两个方面做到这一点.

  • 我不知道哪种方法更好用,为什么?
  • 什么是行业标准?
  • 如何选择上述两种方法之一?
  • 确定哪一个更好的条件是什么?

我知道这是很多问题,但因为我是PHP新手,希望有人能帮助我.

鉴于此,实际上我使用的功能不仅仅是阶乘.它还有一些其他线路可以执行其他任务.为简化起见,我们假设这些是两个函数.所以任何人都可以理解我的问题,而不是无缘无故地复杂化.

我基本上指的是PHP中的递归与迭代.

php loops

25
推荐指数
2
解决办法
8629
查看次数

如何检查递归或迭代是否最适合特定程序?

在我的大学里,我被要求为Fibonacci系列写一个JAVA程序.我使用递归来编写该程序.

但是,助理讲师说我的算法效率不高,并要求我分析.他补充说,按照惯例,迭代适用于该程序而不是递归.

如何分析我们的算法?如何在迭代和递归中检查空间和时间复杂度?就在这时,我发现这些东西和程序的正确性一样重要.

java iteration recursion

5
推荐指数
1
解决办法
288
查看次数

python 中范围的替代

如果我必须生成自然数,我可以使用“范围”,如下所示:

list(range(5))
Run Code Online (Sandbox Code Playgroud)

[0,1,2,3,4]

有没有办法在不使用范围函数或循环的情况下实现这一目标?

python

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

递归vs循环?

谁能解释两种方法之间有什么区别?

方法1

public void run(){
    run();
}
Run Code Online (Sandbox Code Playgroud)

方法2

public void run(){
   while(true){

   }    
}
Run Code Online (Sandbox Code Playgroud)

java

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

如何在数字的素数因子分解中找到素数的多重性?

我必须在所有数字中找到多个最小素数因子,直到10 ^ 7.我正在使用Eratosthenes的Sieve来找到所有素数.并且在一个单独的数组中,我存储了复合数的最小素因子.这是我的代码

 for(ull i=2;i<=m;i++)
{
    if (check[i])
    {
         uncheck[i]=true;
        for (ull k=i*i; k<=n; k+=i)
         {
           if(check[k]==true)
           phi[k]=g;
           check[k]=false;
         }  
    }

}
Run Code Online (Sandbox Code Playgroud)

现在我正在运行一个循环,直到n并在其中使用循环来计算它.这是代码

 for(ull i=4;i<=n;i++)
{

    if(check[i]==false)
    {   
        ull count=0; 
        ull l=i;
         ull r=phi[i];
         while(l%r==0)
         {
            l=l/r;
            count++;
         }               
        cout<<count<<'\n';
    }


}
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法来计算这个?

c c++

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

标签 统计

iteration ×2

java ×2

recursion ×2

c ×1

c++ ×1

language-agnostic ×1

loops ×1

optimization ×1

php ×1

python ×1