c语言 编写程序 使用递归

c语言 编写程序 使用递归,第1张

#include <stdio.h>

void SelectionSort(int *a, int n)//选择排序

{

int i,j

int min

int t

for(i = 0i <n-1i ++)

{

int min = i

for(j = i+1j <nj ++)

if(a[min] >a[j])

{

min = j

}

t = a[min]

a[min] = a[i]

a[i] = t

}

}

int binarySearch(int a[],int low,int high ,int x)//递归折半查找

{

int mid

if(low <= high)

{

mid = (low + high)/2

if(x <a[mid])

binarySearch(a,low,high-1,x)

else

if(x >a[mid])

binarySearch(a,low+1,high,x)

else

return mid

}

else

return -1

}

int main(void)

{

int i,j

int x

int a[11]

int index

for(i = 0i <10i++)//输入十个数

scanf("%d",&a[i])

SelectionSort(a,10)//选择法进行升序排列

printf("排序后的数组:")

for(i = 0i <10i++)//输出数组

printf("%d ",a[i])

printf("\n输入要查找的x:")

scanf("%d",&x)

index = binarySearch(a,0,9,x)

if(index != -1)

printf("%d在数组内,下标识index= %d\n",x,index)//x在数组内则输出x的下标

else //若不在,则插入数组中

{

for(i = 0i <10i++)

if(x <a[i])

break

for(j = 9j>=ij--)

{

a[j+1] = a[j]

}

a[j] =x

printf("x插入后的数组为:\n")

for(i = 0i <11i++)//输出插入x后的新数组

printf("%d ",a[i])

}

system("PAUSE")

return 0

}

下面是测试的结果:

测试结果

思路:先通过程序获得阶乘的值,之后再将阶乘相加,求阶乘时和相加时都用递归的写法

首先是求阶乘:

int factorial(int index){

  int sum = 0

  if (index == 1){

      sum = 1

  }else{

      sum = index * factorial(index-1)

  }

  return sum

}

之后再求和:

int add_recursion(int maxnum){

  int sum = 0

  if (maxnum == 1){

      sum = factorial(maxnum)

  }else{

      sum = factorial(maxnum) + add_recursion(maxnum-1)

  }

  return sum

}

下面是完整的代码:

完整代码

1、在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。 在编程语言中,把直接或间接地调用自身的函数称为递归函数。函数的构建通常需要一个函数或者一个过程来完成。

2、递归函数 是建立在嵌套的基础上的,只不过嵌套调用了自己本身,而且经常不是显式调用。一个含直接或间接调用本函数语句的函数被称之为递归函数,它必须满足以下两个条件:

1) 在每一次调用自己时,必须是(在某种意义上)更接近于解;

2) 必须有一个终止处理或计算的准则。

例如一个非法的递归(嵌套)调用:

void ff(){

ff()

}

int main()

{

ff()

system("pause")

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7771784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存