用递归算法求n个数中的最大数及其位置 c++
//将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;} ...
朝娅锡类: #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<stdio.h>#include<stdlib.h>int d(int a[],int n, int max,int min);int main(){int a[100],n,s;int i;printf("请输入100以内的整数的个数n=");scanf("%d",&n); printf("\n输入数据:\n");for(i=0;i<n;i++) { scanf("%d",&...
禹会区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