《数据结构、算法与应用》6.(递归查询数组中是否包含某元素).

最近在读《数据结构、算法与应用》这本书,把书上的习题总结一下,用自己的方法来实现了这些题,可能在效率,编码等方面存在着很多的问题,也可能是错误的实现,如果大家在看这本书的时候有更优更好的方法来实现,还请大家多多留言交流多多指正,谢谢偷笑吐舌头

 6. 试编写一个递归函数来确定元素 x 是否属于数组 a[0: n-1]。
//
//  main.cpp
//  Test_06
//
//  Created by cc on 14-4-13.
//  Copyright (c) 2014年 cc. All rights reserved.
//

/*
 6. 试编写一个递归函数来确定元素 x 是否属于数组 a[0: n-1]。
 */

#include <iostream>

using namespace std;

template <typename T>
bool isBelongToArray(T x, T* array, int cur, int last);

template <typename T>
bool isBelongToArray(T x, T* array, int lenth);


int main(int argc, const char* argv[]) {

    //test intArray
    
    int intArray[] = {0, 1, 2, 5, 26};
    int lenth = sizeof(intArray) / sizeof(int);
    int x1 = 21;
    
    if (isBelongToArray(x1, intArray, 0, lenth - 1)) {
        cout << "x1属于数组intArray" << endl;
    } else {
        cout << "x1不属于数组intArray" << endl;
    }
    
    //test charArray
    
    char charArray[] = {'a', 'b', 'c', 'f', 's'};
    int lenth2 = sizeof(charArray) / sizeof(char);
    char x2 = 's';
    if (isBelongToArray(x2, charArray, lenth2)) {
        cout << "x2属于数组charArray" << endl;
    } else {
        cout << "x2属于数组charArray" << endl;
    }
    
    return 0;
}


/**
 *	@brief	元素x是否属于array
 *
 *	@param 	x       元素x
 *	@param 	array 	数组array
 *  @int    cur     当前索引
 *  @int    high    n-1
 *
 *  @return true: 是 false: 否
 */
template <typename T>
bool isBelongToArray(T x, T* array, int cur, int last) {
    if (cur == last && x != array[cur]) {
        //找到第n-1个元素没找到
        return false;
    } else if (cur <= last && x == array[cur]) {
        //找到了
        return true;
    } else {
        return isBelongToArray(x, array, cur + 1, last);
    }
}

/**
 *	@brief	元素x是否属于array
 *
 *	@param 	x       元素x
 *	@param 	array 	数组array
 *	@param 	lenth 	数组长度
 *
 *  @return true: 是 false: 否
 */
template <typename T>
bool isBelongToArray(T x, T* array, int lenth) {
    if (lenth == 0) {
        return false;
    }
    
    if (x == array[lenth - 1]) {
        return true;
    } else {
    
        return isBelongToArray(x, array, lenth - 1);
    }
}
我用了两种重载的两种方法来实现该题目,输出结果如下。

本文由CC原创总结,如需转载请注明出处: http://blog.csdn.net/oktears/article/details/23614405

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值