递归求桔子数
来源:互联网 发布:js怎么设置display 编辑:程序博客网 时间:2024/05/16 02:11
日本著名数学游戏专家中村义作教授提出这样一个问题:
父亲将2520个桔子分给六个儿子。分完 后父亲说:“老大将分给你的桔子的1/8给老二;老二拿到后连同原先的桔子分1/7给老三;老三拿到后连同原先的桔子分1/6给老四;老四拿到后连同原先的桔子分1/5给老五;老五拿到后连同原先的桔子分1/4给老六;老六拿到后连同原先的桔子分1/3给老大”。结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔子?
/*File name:求橘子数.cppAuthor:杨柳Date:2017/5/22IDE:DEV-c++ *//*经过分析:1.sum=2520 aver=2520/6=4202.老六得到橘子后,给老大1/3后为420,所以给了老大210,老大给出原来的1/8加得到的210对于420,所以原来有240个橘子3.下一个人原来的橘子数:(nextfirstnum+givernum)*(7-n)/(8-n)=420 firstnum=420*(8-n)/(7-n)-givertnum递归公式:f(firstnum,foregivernum,n){ return 0 n>6return orangenum(nextfirstnum,givernum,n) givernum=firstnum/(9-n)n=1 or givernum=(firstnum+foregivernum)/(9-n)n>1} */#include<iostream>using namespace std;int orangenum(int firstnum,int foregivernum,int n){ //first代表原有的橘子, forenum代表前n-1一个人给的橘子数,n代表老几 int givernum=0;if(n>5){return 0;}else{//计算分给下一个数目if(n==1){ //第一个人是先直接给 cout<<"老"<<n<<"原来的橘子数:"<<firstnum<<endl; cout<<"老"<<n<<"得到的橘子数:"<<foregivernum<<endl;givernum=firstnum/(9-n); cout<<"老"<<n<<"给出的橘子数:"<<givernum<<endl;foregivernum=givernum;}else{ //先得到后再给cout<<"老"<<n<<"得到的橘子数:"<<foregivernum<<endl; int givernum=(firstnum+foregivernum)/(9-n);//当前给出的橘子数 cout<<"老"<<n<<"给出的橘子数:"<<givernum<<endl;foregivernum=givernum;}//下一个人原来的橘子数int firstnum=420*(8-n)/(7-n)-foregivernum;cout<<endl<<"老"<<n+1<<"原来的橘子数:"<<firstnum<<endl;n=n+1;orangenum(firstnum,foregivernum,n); }} int main(){orangenum(240,210,1);return 0;}
阅读全文
1 0
- 递归求桔子数
- 求Fibonacci数(递归)
- 递归求组合数
- 递归求鸭子数
- 递归求桃子数
- 非递归求fibonacci数
- 递归方式求最大数
- 复习--递归求二进制数
- JAVA递归求对称数的算法
- 用递归法求组合数
- 用递归求一个数的阶乘!
- 递归求重复数全排列;
- 树 递归 数叶子 求深度
- 求组合数的递归算法
- 求两个数的最大公约数(递归)
- 递归函数 求两个数的最大公约数
- 求表示方法数-递归法
- OJ函数递归求有序回文数
- 小白题解 Codeforces 266A Stones on the Table
- UE4之反射球边缘存在边缘线问题
- Link-Cut Tree
- 图片网页浏览器
- 【BZOJ2716/2648】SJY摆棋子
- 递归求桔子数
- Spring 注解 <context:component-scan> 子标签 <context:exclude-filter > 和 <context:include-filter>区别
- 如何用keras cnn 做kaggle猫狗大战图片识别
- bzoj 3879 SvT
- 【并发编程】死锁
- 推荐使用的两种单例模式
- Android探索之旅(第十八篇)Android中能不断提高你代码质量的工具
- 面向对象纲要
- c/c++中运行外部程序