如何把下面的C++代码翻译成相应的java代码

helloxx 2008-04-18 04:38:09
如何把下面的C++代码翻译成相应的java代码:
void fun(int n,int* a1,int* a2){
//...
fun(i,a1+1,a2);//i为int类型
}

int a1[] = {1,2,3,4,5};
int a2[] = {6,7,8,9,10};
...全文
141 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodmrning 2008-04-18
  • 打赏
  • 举报
回复
弱弱地问下:调用递归函数是为了实现什功能?还只是练习递归?
  • 打赏
  • 举报
回复
void fun(int n,int* a1,int* a2){
//...
fun(i,a1+1,a2);//i为int类型
}

int a1[] = {1,2,3,4,5};
int a2[] = {6,7,8,9,10};
===================================
int j=0;
void fun(int n,int a1,int[] a2){
//...
fun(i,a1[++j],a2);//i为int类型
}

int a1[] = {1,2,3,4,5};
int a2[] = {6,7,8,9,10};
云上飞翔 2008-04-18
  • 打赏
  • 举报
回复
答:参考代码如下:


public class Test1 {
public static int getPostOrder(int n, int[] preorder, int[] inorder, int[] postorder)
{
return getPostOrder(n,preorder,0,inorder,0,postorder,0);
}

private static int getPostOrder(int n, int[] preorder, int pre_index, int[] inorder, int in_index,int[] postorder,int post_index)
{
if (n == 1)
{
postorder[post_index] = preorder[pre_index];
}
else if (n > 1)
{
int i;
for (i=0; i<n; i++)
{
if (inorder[i+in_index] == preorder[pre_index])
break;
}
if (i == n) return -1;
getPostOrder(i, preorder,pre_index+1, inorder,in_index, postorder,post_index);
getPostOrder(n-1-i, preorder,pre_index+1+i, inorder,in_index+i+1, postorder,post_index+i);
postorder[n-1+post_index] = preorder[pre_index];
}
return 0;

}
public static void main(String[] args) {
// TODO Auto-generated method stub

int i;
int preorder[] = {'A','B','F','E','G','C','D','H','N'};
int inorder[] = {'F','B','E','G','A','H','D','N','C'};
int postorder[] = {'F','G','E','B','H','N','D','C','A'};
int n = preorder.length;

getPostOrder(n, preorder, inorder, postorder);
for (i=0; i<preorder.length; i++)
System.out.print((char)postorder[i]);
System.out.println();

}

}


程序运行结果:FGEBHNDCA
wyyl00 2008-04-18
  • 打赏
  • 举报
回复
有意思么?
helloxx 2008-04-18
  • 打赏
  • 举报
回复
nobody?
helloxx 2008-04-18
  • 打赏
  • 举报
回复
分数不够可以加啊,呵呵
helloxx 2008-04-18
  • 打赏
  • 举报
回复
以下代码怎么改成java代码?
int GetPostOrder(int n, const int* preorder, const int* inorder, int* postorder)
{
if (n == 1)
{
postorder[0] = preorder[0];
}
else if (n > 1)
{
int i;
for (i=0; i<n; i++)
{
if (inorder[i] == preorder[0])
break;
}
if (i == n) return -1;
GetPostOrder(i, preorder+1, inorder, postorder);
GetPostOrder(n-1-i, preorder+1+i, inorder+i+1, postorder+i);
postorder[n-1] = preorder[0];
}
return 0;
}

int main(void)
{
int i;
int preorder[] = {'A','B','F','E','G','C','D','H','N'};
int inorder[] = {'F','B','E','G','A','H','D','N','C'};
int postorder[] = {'F','G','E','B','H','N','D','C','A'};
int n = sizeof(preorder)/sizeof(int);

GetPostOrder(n, preorder, inorder, postorder);
for (i=0; i<sizeof(preorder)/sizeof(int); i++)
cout<<(char)postorder[i];
cout<<endl;

return 0;
}
helloxx 2008-04-18
  • 打赏
  • 举报
回复
m是什么?
云上飞翔 2008-04-18
  • 打赏
  • 举报
回复
答:我初步想到的是这样:(由于JAVA不支持C++中指针类的+、-等操作(高效、功能强大但危险),因此,这一类的指会操作要进行JAVA转换)

void fun(int n,int[] a1,int m,int[] a2){
//...
fun(i,a1,m+1,a2);//i为int类型
}

int a1[] = {1,2,3,4,5};
int a2[] = {6,7,8,9,10};


以上仅供你参考

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧