21xrx.com
2024-12-28 06:23:04 Saturday
登录
文章检索 我的文章 写文章
C++递归代码示例
2023-06-24 03:45:29 深夜i     --     --
C++ 递归 代码示例

C++是一种面向对象的编程语言,递归是C++中一种重要的编程技术,它能够将复杂的问题简单化。递归是指在程序中调用自身函数,直到满足某个条件,才结束函数调用。接下来将分享一些C++递归代码示例,希望对初学者和开发者有所帮助。

Fibonacci数列

Fibonacci数列是指从0开始,0和1为第一项和第二项,后面每一项都是前面两项的和。用递归代码实现Fibonacci数列的计算如下:

int fibonacci(int n){

  if(n == 0)

    return 0;

  if(n == 1)

    return 1;

  return fibonacci(n-1) + fibonacci(n-2);

}

这个递归函数的逻辑非常简单,当输入n等于0或1时,直接返回0或1。当n大于1时,则用递归计算出前两项的和。

二分查找

二分查找是基于有序数组进行查找的算法,它的时间复杂度为O(logn)。用递归代码实现二分查找如下:

int binarySearch(int arr[], int l, int r, int x){

  if(r >= l){

    int mid = l + (r-l)/2;

    if(arr[mid] == x)

      return mid;

    if(arr[mid] > x)

      return binarySearch(arr, l, mid-1, x);

    return binarySearch(arr, mid+1, r, x);

  }

  return -1;

}

这个递归函数的逻辑也很简单,当l<=r时,计算mid = (l+r)/2,如果array[mid] == x,返回mid。如果array[mid] > x,则调用函数自身,在数组的左侧继续查找,否则在右侧继续查找。

判断回文数

回文数是指从左到右和从右到左读都一样的数,例如121、1221等。用递归代码实现判断回文数的如下:

bool isPalindrome(string s, int start, int end){

  if(start >= end)

    return true;

  if(s[start] != s[end])

    return false;

  return isPalindrome(s, start+1, end-1);

}

这个递归函数的逻辑比较简单,如果输入字符串s在start位置和end位置的字符相等,则继续在下一组位置检查,直到检查完字符串的一半以上位置时返回true。

总结:

以上是C++中三个较为常见的递归算法代码示例,可以看到通过递归能够让代码更简洁,易于理解,但是递归也存在一些问题,如可能会导致栈溢出和内存泄漏等问题,因此在实际开发中需要注意其缺陷。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复