您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 实验3-幸运数-递归
实验3求解幸运数的问题-递归班级:18软件工程专升本2班姓名:刘亚星学号:5187101241实验目的1.理解并实现简单的递归问题2.掌握递归的具体应用实验环境VC6.0或VisualStudio2008实验内容编程题:1求解幸运数问题【问题描述】小明同学在学习了不同的进制之后用一些数字做起了游戏。小明同学知道,在日常生活中最常用的是十进制数,而在计算机中二进制数也很常用。现在对于一个数字x,小明同学定义出两个函数f(x)和g(x),f(x)表示把x这个数用十进制写出后各数位上的数字之和,例如f(123)=1+2+3=6;g(x)表示把这个数用二进制写出后各数位上的数字之和,例如123的二进制表示为1111011,那么g(123)=1+1+1+1+0+1+1=6.小明同学对于一些正整数x满足f(x)=g(x),他把这种数称为幸运数,现在他想知道小于等于n的幸运数有多少个?输入描述:每组数据输入一个数n(n=100000)。输出描述:每组数据输出一行,小于等于n的幸运数个数。输入样例:21样例输出:32验证P66N皇后问题实验结果:源程序清单:#includestdio.h#includestdlib.hintdigits(intn){if(n==0)return0;returnn%10+digits(n/10);}intDigitsToBinary(intn){if(n==0)return0;//do{//sum=sum+n%2;//n=n/2;//}//while(n0);//returnsum;returnn%2+DigitsToBinary(n/2);}intsum(intc){intcount=0;for(inti=1;i=c;i++){inta=DigitsToBinary(i);intb=digits(i);if(a==b){printf(幸运数:%d\n,i);count++;//printf(二进制和:%d\n,a);//printf(数字和:%d\n,b);}else{printf(%d不是幸运数\n,i);}}returncount;}voidmain(){intc;intsu;scanf(%d,&c);su=sum(c);printf(总个数:%d\n,su);}
本文标题:实验3-幸运数-递归
链接地址:https://www.777doc.com/doc-7184790 .html