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