博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些简单的递归算法
阅读量:6801 次
发布时间:2019-06-26

本文共 2983 字,大约阅读时间需要 9 分钟。

1、将一个数倒转输出:

  (1)限定使用递归,第一反应想到的方法 

1 #include
2 int array[10]; 3 int i=0; 4 void convert(int n){ 5 if(n==0) 6 return; 7 else{ 8 array[i++]=n%10; 9 convert(n/10);10 }11 }12 13 int main(){14 int number=12345;15 convert(number);16 for(int j=0;j

  (2)使用数组指针:

1  #include
2 #include
3 4 void convert(int * result,int num){ 5 if(num>10) 6 convert(result +1,num/10); 7 *result=num%10; 8 } 9 10 int main(){11 int number=12468;12 int result[10]={-1};13 convert(result,number);14 printf("%d\n",number);15 for(int i=0;i<10;i++)16 if(result[i]>0)17 printf("%d",result[i]);18 }

 

2、输出学生的成绩大于平均成绩的学生:

  (1)C 语言版用递归:

  

1 /* 2      这里有一个疑问:在加与不加return average, average的值在每次返回的时候是一样的  3      按理说,如果不加return average的值每次average的值应该不一样 ? 除非 average每次递归后保存一次值  4  */ 5    6  #include
7 double find(int total,int n){ 8 int number,score,average; 9 scanf("%d",&number);10 if(number!=0){11 scanf("%d",&score);12 average=find(total+score,n+1);13 if(score>=average){14 printf(" number=%d: score=%d\n",number,score);15 }16 printf(" average=%d ",average);17 // return average;18 }else{19 printf("Average=%d\n",total/n);20 return total/n;21 }22 }23 24 int main(){25 find(0,0);26 }

  (2)Java用的for循环:

    

1 package employeer_algorithm; 2  3 import java.util.Scanner; 4  5 class Student { 6     private String name=""; 7     private double store=0; 8     public String getName() { 9         return name;10     }11     public void setName(String name) {12         this.name = name;13     }14     public double getStore() {15         return store;16     }17     public void setStore(double store) {18         this.store = store;19     }20 }21 public class Test{22     public static void main(String args[]){23         double sum=0;24         Student students[]= new Student [5];25         System.out.println("Please input informations of students:");26         Scanner sc = new Scanner(System.in);27         for(int i=0;i

 

3、组合问题:从M个不同字符中选择N个字符的不同组合:

  

1 #include
2 #include
3 #include
4 void find(char *source, char *result, int n){ 5 if(n==1){ 6 while(*source){ 7 printf("%s %c\n",result,*source++); 8 } 9 }else{10 int i,j;11 for(i=0;source[i]!=0;i++);12 for(j=0;result[j]!=0;j++);13 for(;i>=n;i--){14 result[j]=*source++;15 result[j+1]='\0';16 find(source,result,n-1);17 }18 }19 }20 21 int main(){22 int const n = 3;23 char * source="ABCDEF";24 char result[n+1]={
0};25 if(n>0)26 find(source,result,3); 27 }

 

转载于:https://www.cnblogs.com/hoojjack/p/4755110.html

你可能感兴趣的文章
9.0 alpha 版安装出现 could not execute command lessc 的问题
查看>>
SIP入门(二):建立SIPserver
查看>>
html里的table如何在表格内部保留表格横线的同时去掉表格里的竖线
查看>>
老板必备:核心员工跳槽时,必聊的8个话题(转)
查看>>
TNS-00512: Address already in use-TNS-12542: TNS:address already in use
查看>>
什么是快速排序(转)
查看>>
会议论文重新投稿算不算侵权?这肯定是所多人都遇到过的问题。
查看>>
js判断checkbox状态,处理表单提交事件
查看>>
工程师,请优化你的代码
查看>>
BZOJ3495 : PA2010 Riddle
查看>>
探访莱布尼茨:与大师穿越时空的碰撞
查看>>
Hibernate SQL优化技巧dynamic-insert="true" dynamic-update="true"
查看>>
如何削减高速语言?
查看>>
山寨游戏的未来Apple App Store
查看>>
JSON.parse()和JSON.stringify()
查看>>
python出现UnicodeEncodeError有可能产生的另一个原因
查看>>
域名绑定,解析总结
查看>>
JAVA 网络长短连接
查看>>
transform,transition,animation 的混合使用——进阶
查看>>
【网络流】 HDU 3468 Treasure Hunting
查看>>