用递归算法求n个数中的最大数及其位置 c++

作者&投稿:郭黛 (若有异议请与网页底部的电邮联系)
C++ 递归调用 求N个数的最大值~

//将n个数保存在数组a[n]中
//数组a[n]你也可以输入
//不懂可以再问~

#include
using namespace std;
int getMax(int a[],int n,int max)
{
if(n <= 0)return max;
return getMax(a,n-1,max>a[n-1]?max:a[n-1]); //递归调用
}

int main()
{
int a[] = {2,3 -1,4,9,10,5,0,-2,7};
//注意这里调用的参数,第一个是数组a,第一个是数组的大小n=10,第三个选一个初始的最大值如a[0]
cout<<"这10个数的最大值为:"<<getMax(a,10,a[0])<<endl;
return 0;
}

n的数目是否已知?
/*代码参考*/
#include #include using namespace std;int main(){ int i; cout>i; int pos; int pre_num[i+5]; int save_num[i+5]; while(i--) { cin>>pre_num[i-1]; save_num[i-1]=pre_num[i-1]; } sort(pre_num,pre_num+i); for(int j=0;j<i;j++) { if(save_num[j]==pre_num[i-1]) { pos=j; break; } } cout<<"max :"<<pre_num[i-1]<<"pos"<<pos; return 0;}

int max(int n, int numbers[], int index)
{
 if(index < (n-1)) {
  if(numbers[index] > numbers[index+1])
   numbers[index+1] = numbers[index]; //没到最后位则把大数放后面
  index++;
  return max(n, numbers, index);
 };
 else if(index == (n-1)) {
  return numbers[index];  //到最后位直接返回最后位就是最大的
 };
 else {
  return -1; //数组越界时返回-1
 };
};
void main(void)
{
 int numbers[]={1,3,8,2,4,6};
 int N=6;
 int R = max(N,numbers,0));
 for (int i = 0; i < N; ++i) {
  if (number[i] == R) {
   printf("LOCATION: %d.
", i); //输出位置
   break;
  };
 };
 printf("RESULT: %d.
", R); //输出结果
 return;
};


是求和,还是什么?比如求1到100的和?

为什么非要用递归呢?感觉好难哦


用递归算法求n个数中的最大数及其位置 c++
\/\/到最后位直接返回最后位就是最大的 }; else { return -1; \/\/数组越界时返回-1 };};void main(void){ int numbers[]={1,3,8,2,4,6}; int N=6; int R = max(N,numbers,0)); for (int i = 0; i < N; ++i) { if (number[i]...

从n个数中取出m个数字的所有情况,用什么算法解决,哪种效率比较高呢_百...
(1)递归 a.首先从n个数中选取编号最大的数,然后在剩下的n-1个数里面选取m-1个数,直到从n-(m-1)个数中选取1个数为止。b.从n个数中选取编号次小的一个数,继续执行1步,直到当前可选编号最大的数为m。下面是递归方法的实现:\/\/\/ 求从数组a[1..n]中任选m个元素的所有组合。\/\/\/ a...

java 递归算法问题:(n,k)=(n-1,k-1)+(n-1,k)?
就是说 n 个里面要选 k 个,分为两组,包含 A和不包含A。包含 A : 已经包含A了,所以总数是 n-1 个了;同理,已经包含了A,所以只要选 k -1 个就可以了,所以为 (n-1,k-1)。不包含A:已经不包含A了,所以总数是 n-1 个;还是选 k个,所以为(n-1,k)。无限递归即可以了。

python-027-递归-求序列最大值、计算第n个调和数、转换字符到整数_百 ...
最近算法学到了递归这一块,写了三个课后习题:给一个序列S,其中包含n个元素,用递归查找其最大值。输出:调和数:Hn = 1 + 1\/2 + 1\/3 + ··· + 1\/n 输出:例如:"12345"<class 'str'> 转换为12345<class 'int'> 输出:递归分为线性递归、二路递归、多路递归。

设计递归算法生成n个元素的所有排列对象
int * comm(int n)\/\/组合n!个数(这里用递归算){ int *a=new int[count(n)];if(count(n)==1)a[0]=1;else { int *b=new int[count(n-1)];b=comm(n-1);for(int i=0;i<count(n-1);i++)for(int j=0;j<n;j++)a[i*n+j]=(b\/pow10(j)*10+n)*pow10(j)+b%...

C语言如何用递归算法求1!+2!+3!+...n!
float fun(int n){ if(n==1) return 1;\/\/如果n=1则直接返回1 return n*fun(n-1);\/\/否则返回n*fun(n-1),以此计算n的阶乘,这条语句就是递归体 } void main(){ int i;float sum=0;for(i=1;i<=n;i++){ sum+=fun(i); \/\/循环调用,用sum累计 } printf("sum=%.2f\\n",...

c语言 跪求:输入M个数从中取N个数进行组合并输出所有组合项
典型的组合问题,解法有递归、回溯等等 递归法较简单,代码如下:void combine(int a[], int n, int m, int b[], int M);参数:a 存放候选数字 n 总项数 m 取出项数 b 存放选出结果 M = m include "stdio.h"define MAX 100 void combine(int a[], int n, int m, int b[], ...

...1) 求数组A中的最大整数。 (2) 求n个整数的和。
\/\/递归求数组A[n]中的最大整数;int maxintA(int n){ if(0 == n) return 0;\/\/数组为空 if(1 == n) return a[n-1];\/\/数组中只有一个元素 return (a[n-1] > manxintA(n-1)?a[n-1]:maxintA(n-1));\/\/递归 } \/\/递归求素组A[n]中n个整数的和 int sumofA(int n){...

用递归方法求n阶
递归求n阶的方法如下:递归实现n的阶乘什么是阶乘:0! = 1,n! =n * (n - 1) * (n - 2)...3 *2 * 1; 解题思路: 1> 分析题意,很明显0是递归出口; 2> 很好看出,递归调用自己,直到n等于0,返回之前的函数,直到最后一个; 3> 一个简单n的阶乘就计算完成,返回并输出。菲...

已知A【n】为整数数组,编写一个递归算法求其中n个元素的平均值_百度...
include<stdio.h>int a[100],n;float digui(int i){ if(i==-1)return 0; return 1.0\/n*a[i]+digui(n-1);}int main(){ int ans,i; scanf("%d",&n); for(i=0;i<n;i++)scanf("%d",&a[i]); printf("%f",digui(n-1)); return 0;} ...

禹会区19351157732: 利用递归求n个数中的最大数 -
朝娅锡类: #include <stdio.h> int main() {int max(int x, int y);int Rand_Num[100]={0,1,2,3,4,5,6,7,8,9,10}, Size=10;int Num;for(int i=0;i<Size;i++)Num=max(Rand_Num[i],Rand_Num[i+1]);printf("Max Num is:%d\n",Num);return 0; } int max(int x, int y) {...

禹会区19351157732: 用递归方法求N个数中的最大数及其位置. -
朝娅锡类: public class MaxNum {int max_pos=-1; public int max_elem(int[] A, int n) { if (n == 0) { return A[0]; } int m = Math.max(max_elem(A, n - 1), A[n]); if(m==A[n]){ max_pos=n; } return A[max_pos]; } public static void main(String[] args) { MaxNum max = ...

禹会区19351157732: C++ 递归调用 求N个数的最大值 -
朝娅锡类: //将n个数保存在数组a[n]中 //数组a[n]你也可以输入 //不懂可以再问~#include <iostream> using namespace std; int getMax(int a[],int n,int max) {if(n <= 0)return max;return getMax(a,n-1,max>a[n-1]?max:a[n-1]); //递归调用 }int main() {int a[] ...

禹会区19351157732: C语言编程:写一个递归函数,求n个数的最大值. -
朝娅锡类: int getMax(int* intArray, int startPos, int arrraySize) { int tmp=0; if ((!intArray) || (startPos = arraySize)) { exit(0); } if (startPos == (arraySize - 1)) { return *(intArray+startPos); } return *(intArray+startPos) > (tmp=getMax(intArray, ++startPos, arraySize)) ? *(intArray+startPos) :tmp; }

禹会区19351157732: 用递归算法求数组中一串数字连续和最大的值 -
朝娅锡类: int max(int array[ ],int n) { if (n return(array[0]); // 就一个数,最大值就是自已 int t=max(array+1,n-1); // 求后面 n-1个数的最大值 if (t>array[0]) // t 比第一个大,返回最大 treturn(t); else return(array[0]); // t小,返回array[0]; }

禹会区19351157732: C语言,编写函数,用递归方法求n个元素数组a的最大值 -
朝娅锡类: int maxnum(int array[], int n) { if(n == 1){ return array[0];}else{ return max(array[0], maxnum(array+1,n-1));} }

禹会区19351157732: 用归纳法设计一个递归算法,它在有n个元素的序列A[1...n]中寻找最大元素 -
朝娅锡类: int avg(int* a,int x) {if(x==0)return a[x];elsereturn (avg(a,x-1)+a[x])/2; } 在main函数中使用: avg(a,x);//其中a是要求平均数的数组,x是数组的长度-1

禹会区19351157732: c语言:输入一串数,以 - 1结尾,用递归求其最大值~求指教~~~
朝娅锡类: #include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int d(int a[],int n, int max,int min);int main(){int a[100],n,s;int i;printf("请输入100以内的整数的个数n=");scanf("%d",&amp;n); printf("\n输入数据:\n");for(i=0;i&lt;n;i++) { scanf("%d",&amp;...

禹会区19351157732: 用递归法求数组{2,5,8,1,3,6,9,0,7,4}中的最大值 -
朝娅锡类: #include <iostream> using namespace std; int getMax(int a[],int n,int max) { if(n <= 0)return max; return getMax(a,n-1,max>a[n-1]?max:a[n-1]); //递归调用 } int main() { int a[]={2,5,8,1,3,6,9,0,7,4}; //注意这里调用的参数,第一个是数组a,第一个是数组的大小n=10,第三个选一个初始的最大值如a[0] cout<<"这10个数的最大值为:"<<getMax(a,10,a[0])<<endl; return 0; }

禹会区19351157732: pascal,用递归找n个数中最大数及其位置,请纠错 -
朝娅锡类: program ex5; var i,n,max,temp:integer; a:array[1..1000]of integer; procedure zd(k:integer); begin if k>n then exit; if a[k]>max then begin max:=a[k]; temp:=k; end; zd(k+1); end; begin readln(n); for i:=1 to n do read(a[i]); max:=a[1]; zd(1); writeln(temp:3,max:3) end

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网