Skip to content

Instantly share code, notes, and snippets.

@KentaKomai
Created July 4, 2013 03:59
Show Gist options
  • Save KentaKomai/5924813 to your computer and use it in GitHub Desktop.
Save KentaKomai/5924813 to your computer and use it in GitHub Desktop.
recursion sample
#include<iostream>
#include<cmath>
using namespace std;
#define ARRAY_LENGTH(array) (sizeof(array) / sizeof(array[0]))
/*
* forループで配列内の最大値を返す
*/
int get_max_forloop(int numbers[], int size){
int max_number = 0;
for(int i=0; i<size; i++)
max_number = max_number < numbers[i] ? numbers[i] : max_number;
return max_number;
}
/*
* forループで配列内の整数の合計を返す
*/
int get_total_forloop(int numbers[], int size){
int total = 0;
for(int i=0; i<size; i++)
total += numbers[i];
return total;
}
/*
* 再帰を用いて配列内の最大値を探す
*/
int get_max_recursive(int numbers[], int size){
if(size == 0) return 0;
int tmp_number = get_max_recursive(numbers, size-1);
return tmp_number > numbers[size-1] ? tmp_number: numbers[size-1];
}
/*
* 再帰を用いて配列内の整数の合計を返す
*/
int get_total_recursive(int numbers[], int size){
if(size==0) return 0;
return numbers[size-1] + get_total_recursive(numbers, size-1);
}
int main(){
int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 10, 9};
cout<< "--------get_max-------" << endl;
cout<< get_max_forloop(numbers, ARRAY_LENGTH(numbers) ) <<endl;
cout<< get_max_recursive(numbers, ARRAY_LENGTH(numbers) ) <<endl;
cout<< "--------get_total-------" << endl;
cout<< get_total_forloop(numbers, ARRAY_LENGTH(numbers) ) <<endl;
cout<< get_total_recursive(numbers, ARRAY_LENGTH(numbers) ) <<endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment