微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

递归调用和普通调用的区别

如何解决递归调用和普通调用的区别

假设有一个函数 f();

void f(int n)
{
  if(n<=1)
    return;
  f(n-1);
  f(n-1);
}

我有两个关于此代码的主要问题:

  1. 递归调用的总数是多少?
  2. 呼叫总数是多少?

还有这段代码的时间复杂度是多少?

基本上,我想了解调用和递归调用间的区别,以及总调用是否也包括递归调用

解决方法

我将专注于您的术语问题

基本上,我想了解调用和递归之间的区别 调用次数以及总调用次数是否也包括递归调用次数。

剩下的就是数数了,你肯定可以自己做。

递归调用是来自同一个函数的调用。所以,例如您的函数 f() 包含两个递归调用,都是 f(n-1)

如果有人调用 f(4),那么这是一个非递归调用(不是来自 f() 内部),并且通过 f(n-1) 会导致很多递归调用,其中 f () 调用自身。

所以:

  • 总调用次数 = 调用次数,包括非递归调用和递归调用。
  • 递归调用是来自 f() 内部的调用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。