首页 > 解决方案 > C++ 长度 int 数组以递归方式

问题描述

我想知道如何实现一个简单的函数“length”,它以递归方式返回给定数组的长度。

这对 Prolog 来说似乎很容易,但我不确定如何用 C++ 做到这一点,确切地说,如何以有效的方式划分数组。

示例可能是:

int lenght(*int arr)
{
...
}

int main()
{
    int arr[5] = {1,2,3,4,5};
    cout << "Length is: " <<length(arr)
}

在 Prolog 中,我会使用类似两个案例的东西,一个用于基本案例,另一个用于递归案例

length([], 0).
length([Head|Tail], Length) :- size(Tail,TailListLength), Length is TailListLength+1.

标签: c++recursion

解决方案


C++ 中的数组不是递归数据结构(而是多个连续的存储槽),与列表相反,有头有尾。您可以iterator使用其 has-next 对其进行递归长度。

由于长度是线性属性,所以没那么有趣。

二进制搜索或任何分而治之的方法会做得更好。


推荐阅读