递归求和函数

递归函数rSum求数组元素的和,递归函数AbsSum1求数组元素绝对值的和,采用的是条件跳转语句,递归函数AbsSum2求数组元素绝对值的和,采用的是条件传送语句。

实现代码

int rSum( int *Start, int Count );
unsigned int AbsSum1( int *Start, int Count );
unsigned int AbsSum2( int *Start, int Count );

void main()
{
	int A[]= {36, 48, 12, -9, 15, -17};
	int Count = sizeof(A)/sizeof(int);
	int sum1;
	unsigned int sum2,sum3;
	sum1 = rSum( A, Count );    // 数组元素的和
	sum2 = AbsSum1( A, Count ); // 数组元素绝对值的和
	sum3 = AbsSum2( A, Count ); // 数组元素绝对值的和
	while(1);
}
int rsum (int *Start, int Count)
{
	static int val,m=0;
	if(Count<=0)
	  val=0;
	else
	{
	  m += *Start;
	  val=rSum(Start+1, Count-1);	
	}
	return m;
}

unsigned int AbsSum1 ( int *Start, int Count )
{
	static unsigned int val,m=0;
	if ( Count<=0 )
	  val=0;
	else
	{
	 if (*Start<0)   //条件跳转
		 m += -(*Start);
	 else
		 m += *Start;
	 val = AbsSum1(Start+1, Count-1);
 }
	return m;
 }

 unsigned int AbsSum2 ( int *Start, int Count )
{
	static unsigned int val,m=0;
	if ( Count<=0 )
		val=0;
	else
	{
	  m += *Start>0 ? *Start : -(*Start); // 条件传送
	  val = AbsSum2(Start+1, Count-1);
  }
	return m;
 }

sum1=0x55(int),   sum2=sum3=0x89(uint)。

 

你可能感兴趣的:(算法)