什么是更好的递归或迭代星形模式?
What is better recursive or iterative star pattern?
我需要做一个函数来获取 int 并做一个正方形的星形图案,就像我将 5 插入函数中它会给我:
*****
*****
*****
*****
*****
不知递归或迭代有什么性能更好的方案?递归解决方案的成本是多少?
你的迭代函数比递归函数效果更好
递归函数多次调用自身直到错误条件不匹配递归调用。
让我们以下面的例子来理解更多
我们必须找到 n 的阶乘,其中 n=7
n=7;
int recfactorial(int n)
{
if(n > 1)
return n * recfactorial(n - 1);
else
return 1;
}
对于上面的函数 n 次递归调用,因此将使用 n 个堆栈。每次调用一个,因此它将使用 O(N) 辅助 space.
其中迭代函数
for(i=1;i<=N;i++){
fact=fact*i;
}
你有 N 多重 for 循环所以你的时间复杂度将是 O(N) 。您将在不需要额外 space 的情况下完成整个工作,因此您的程序 Auxillary space 是恒定的,即 O(1)
我需要做一个函数来获取 int 并做一个正方形的星形图案,就像我将 5 插入函数中它会给我:
*****
*****
*****
*****
*****
不知递归或迭代有什么性能更好的方案?递归解决方案的成本是多少?
你的迭代函数比递归函数效果更好
递归函数多次调用自身直到错误条件不匹配递归调用。 让我们以下面的例子来理解更多 我们必须找到 n 的阶乘,其中 n=7 n=7;
int recfactorial(int n)
{
if(n > 1)
return n * recfactorial(n - 1);
else
return 1;
}
对于上面的函数 n 次递归调用,因此将使用 n 个堆栈。每次调用一个,因此它将使用 O(N) 辅助 space.
其中迭代函数
for(i=1;i<=N;i++){
fact=fact*i;
}
你有 N 多重 for 循环所以你的时间复杂度将是 O(N) 。您将在不需要额外 space 的情况下完成整个工作,因此您的程序 Auxillary space 是恒定的,即 O(1)