请高手帮忙,谢谢!!!只有5分了,各位不好意思了

来源:百度知道 编辑:UC知道 时间:2024/05/03 07:05:02
#include<iostream.h>
int maza(int *,int ,int);
void main()
{
int n,count=0,j=0;
cin>>n;
int *a=new int[n];
for(int i=1;i<=n/2;i++)
{
if(n%i==0)
a[j++]=i;
}
for(int k=j-1;k>=0;k--)
{
int b;
b=maza(a,n,k);
count+=b;
}
cout<<count;
}
int maza(int *a,int n,int k)
{
int c=0;
//while(k>=0)
//{
if(a[k]<=n/2&&k>=0)
{
c++;
maza(a,a[k],k-1);
}
else
maza(a,a[k],k-2);

return c;
}

至于这个程序到底要干嘛我不管,如果是编译不能通过的话,问题应该是在:
int n,count=0,j=0;
cin>>n;
int *a=new int[n];

无论是定义数组,还是这样动态分配一块内存,编译器必须知道分配多少内存。而n是一个变量,是不能用于表示数组大小的,n必须是编译时可确定的常量。
可以用
const n = ...;
或#define n ...

还有我觉得你这个递归是不收敛的。

什么意思呀,有Bug??