sjfb.net
当前位置:首页 >> C++关于递归中的数组有疑问 >>

C++关于递归中的数组有疑问

你的count中的map参数是一个char型的变量,而你调用的时候传递的是二维的char数组,所以出错了,需要将count函数中的map变量也改为二维数组的方式如char map[][111]

#include using namespace std; int const N = 10; int Max(int *a,int n) { if(n == 0) return a[n]; int t = Max(a,n-1); return t > a[n] ? t : a[n]; } int main() { int a[N]; for(int i = 0;i < N;i++) cin>>a[i]; cout

动态内存确实会重新开辟,只是这不是在栈上开辟的,是在堆(堆和堆栈是不同的,堆栈是由编译器自动分配释放,而堆则是使用运行时分配给代码和堆栈以外的内存,其由程序员分配和释放,程序结束后由OS回收)。 如果递归深度过大,是会出现内存耗尽...

int sum(int *A, int n) { if (n==1) { return A[0]; } return sum(A, n-1) + A[n-1];}用数学来表示,就是: S1 = A1 Sn = Sn-1 + An 但c++数组是从0计数的,所以 S1 = A0 Sn = Sn-1 + An-1

代码如下: #include int is_set(int val, int *a, int len){if (val == *a){return 1;}if (len > 1){return is_set(val, a + 1, len - 1);}else{return 0;}}int main(){int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};int exist1 = is_set(9, a, 10...

当你输入的数字总是绝对升序时,max只是一个垃圾值。把formax中的int max改成int max=a[0]一试……

int cal(int n,int a) { if(n ==0) { return v[0]; } return cal(n - 1) + a; }

//将n个数保存在数组a[n]中 //数组a[n]你也可以输入 //不懂可以再问~ #include using namespace std; int getMax(int a[],int n,int max) { if(n a[n-1]?max:a[n-1]); //递归调用 } int main() { int a[] = {2,3 -1,4,9,10,5,0,-2,7}; //注意这...

else后面要用括号括起来 动态建立数组得用int * a = new int[n]; #include#includeusing namespace std;int compare(int *max,int amount){ if(amount==0) { return max[amount]; } else //!!!!这里 { int t=compare(max,amount-1); return t>ma...

楼上的是伪递归,看起来是递归调用了,其实,还是双重循环,没有巧妙的使用到递归。 代码如下: #define PLUS 7//递归寻找配对void find(int num, int arr[], int arrSize) {if (arrSize == 0) {return;}if (*arr + num == PLUS) {printf("%d,%3...

网站首页 | 网站地图
All rights reserved Powered by www.sjfb.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com