您的位置:首页 > 其它

递归实现二分法

2016-07-15 23:20 357 查看
编写一个F(n) = n*n + (n-1)(n-1) + … + 1 ;

#include<iostream>

using namespace std;

int sum(int n)
{
if(n == 1){
return 1;
}
int temp = 0;
temp = (n*n)+ sum(n-1);
return temp;
}
int main()
{
int result;

result = sum(2);

cout << result <<endl;
return 0;
}
5
Press any key to continue


用递归实现二分法:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>

#define   length   10

using namespace std;

int  find_value(int str[],int left,int right,int value);

int  find_value (int str[],int left,int right,int value)
{

int med;
med = (left + right)/2;
if(left > right){
return  -1;
}else {

if(value > str[med]){
return  find_value( str ,med+1,right,value);

}else if(value < str[med]){

return   find_value (str,left,med -1,value);
}else{

//     printf("find! ");
return med;

}

}

}

int main(int aegc,char **argv)
{

int str[length] = {0};
int i;
for(i =0 ; i < length; i++)
{
str[i] = rand()%100;
}
int j;
int k;
for(j = 1;j<length;j++){
for(k = j -1;k >= 0 && str[k] > str[k+1];k--)
{
int temp =   0;
temp     = str[k];
str[k]  = str[k+1];
str[k+1]   =temp;
}
}

for(i = 0 ; i < length ; i++)
{
printf("  %d",str[i]);
}
cout <<endl;

int des =  find_value(str,0,length-1,69);
printf("    %d is find",des);

return 0;
}

0  24  34  41  58  62  64  67  69  78
8 is findPress any key to continue
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归