[我需要做一个获取整数并做正方形的星形的函数,就像我在函数中插入5会给我:
*****
*****
*****
*****
*****
我想知道哪种方法具有更好的性能递归或迭代解决方案?递归解决方案的成本是多少?
[您的迭代函数优于递归函数
递归函数多次调用自身,直到错误条件与递归调用不匹配为止。让我们以下面的例子来了解更多我们必须找到最多n的阶乘,其中n = 7n = 7;
int recfactorial(int n)
{
if(n > 1)
return n * recfactorial(n - 1);
else
return 1;
}
对于以上函数,需要进行n个递归调用,因此将使用n个堆栈。每个呼叫一个,因此它将使用O(N)个辅助空间。
迭代功能在哪里
for(i=1;i<=N;i++){
fact=fact*i;
}
您具有N个用于循环的变异,因此您的时间复杂度将为O(N)。您将不需要额外的空间即可完成整个工作,因此程序的辅助空间是恒定的,即O(1)