标题:一个递归问题
只看楼主
sccdyc
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-4-23
 问题点数:0 回复次数:11 
一个递归问题
题目:我用递归来求数组中的元素和,但却成了死循环,谁帮忙解决一下呀
#include<stdio.h>
int Add(int array[],int n)
{ int c;
if(n==0) c=array[0];
else c=array[n]+Add(array,n-1);
return c;
}
int main(void)
{int i,array[10];
for(i=0;i<=9;i++)
scanf("%d",array+i);
printf("%d",Add(array,9));
getch();
return 0;
}
搜索更多相关主题的帖子: 递归 array int Add getch 
2006-04-24 20:08
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 
程序没错.

我的原则很简单:不做不喜欢的事!
2006-04-24 20:10
zgwxwn
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-4-24
得分:0 

不是死循环啊 没错啊


coding & enjoying
2006-04-25 08:12
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
得分:0 

你运行了没有,我刚才运行了一下,没有错误呀,完全正确。
可能使你的编译器有问题。


2006-04-28 20:33
快乐一下
Rank: 1
等 级:新手上路
帖 子:268
专家分:0
注 册:2006-4-28
得分:0 

那看我这个错在那?
(1)编制一个函数transfer(n)其功能是将二进制数转换为十进制数.   转换方法为除2取余,采用递归的方法.(2)编制一个函数,在主函数中输入一个十进制正整数,  调用(1)中的函数转换为二进制并输出.希望大家帮我,谢谢.
transfer(int n)
{int i,x;
i=2;
if(n==0)transfer(n)==0;
n=transfer(n/2)%i;
printf("%d",n);
}

main()
{int n ;
clrscr();
printf("please into shuzhi");
scanf("%d",&n);
printf("%d\n",n);
transfer(n);
getch();
}


学习,充实自己。
2006-04-28 20:40
cxwl3sxl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:495
专家分:129
注 册:2005-11-12
得分:0 
子函数有问题!

努力,哈哈,总有一天会变成高手~~~~~~因为我相信:没有办不到,只有想不到!http://t..cn/fpress
2006-04-28 20:56
快乐一下
Rank: 1
等 级:新手上路
帖 子:268
专家分:0
注 册:2006-4-28
得分:0 

是if(n==0)transfer(n)==0;这里吗?怎么改,我改了一个晚上了,就是改不好.


学习,充实自己。
2006-04-28 21:32
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 

#include <stdio.h>
#include <conio.h>

const int SIZE = 5;
int iindex = SIZE - 1, isum = 0;

int main(void)
{
int ia, iarra[SIZE];
int Fun(int iarra[]);

for (ia= 0; ia < SIZE; ia++)
{
scanf("%d", &iarra[ia]);
}
printf("itotal = %d\n", Fun(iarra));

getch();
return 0;
}

int Fun(int iarra[])
{
isum += iarra[iindex];
iindex--;
if (iindex >= 0)
{
Fun(iarra);
}
return isum;
}


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-28 23:06
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
得分:0 

5楼你的程序错误太多,
我按着你的程序编了个,你自己看下:
#include<stdio.h>
int transfer(int n)
{int i,x;
if(n==0)
{
printf("0");
return 0;
}
else if(n==1)
{
printf("1");
return 1;
}
else
{

transfer(n/2);
i=n%2;
printf("%d",i);
}
}

main()
{int n ;
clrscr();
printf("please into shuzhi:");
scanf("%d",&n);
printf("%d\n",n);
transfer(n);
getch();
}


对不礼貌的女生收钱......
2006-04-29 09:29
快乐一下
Rank: 1
等 级:新手上路
帖 子:268
专家分:0
注 册:2006-4-28
得分:0 

可以了,谢谢了。
我是一个刚学C语言还不到一个月,所以很多都不懂,还望大家不要笑我。请问"return"是用来做什么,他有什么
意义?


学习,充实自己。
2006-04-29 15:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-59822-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.099867 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved