姝乙
2016-03-25 00:50
#include <stdio.h>
int getPeachNumber(int n)
{
int num; //定义所剩桃子数
if(n==10)
{
return 1; //递归结束条件
}
else
{
num = (getPeachNumber(n+1)+1)*2; //这里是不应该用递归呢?
printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
}
return num;
}
int main()
{
getPeachNumber(10);
int num = getPeachNumber(1);
printf("猴子第一天摘了:%d个桃子。\n", num);
return 0;
}
num = (getPeachNumber(n+1)+1)*2;这个是怎么循环呢?
你有一个错误 getPeachNumber(10); 你的代码中这一行的下面已经给出来int num= getPeachNumber(1);
你再给他一个 getPeachNumber输入一个10,就重复了。
你输入的不是10而是1!
在语句 int num= getPeachNumber(1); 中括号里面的就是你要输入的值。
为什么等得到9~1天的桃子数是因为你使用了递归函数num = (getPeachNumber(n+1)+1)*2; 这句话让程序能够一次次循环使用上一个语句的结果
如
n=1时
num =( getPeachNumber(2)+1)*2;
继续递归
num = (getPeachNumber(3)+1)*2;
继续
num = (getPeachNumber(4)+1)*2;
num = (getPeachNumber(5)+1)*2;
num = (getPeachNumber(6)+1)*2;
num = (getPeachNumber(7)+1)*2;
num = (getPeachNumber(8)+1)*2;
num = (getPeachNumber(9)+1)*2;
直到结束n==10
按原题条件可以正向打印
#include<stdio.h>
int main(){
int day,num;
num = 1;
printf("第10天剩余桃子%d个\n",num);
for ( day=9;day>0;day--) {//从剩下桃子计算,吃9天
num = (num+1)*2;
printf("第%d天剩余桃子%d个\n",day,num);}
printf("最初的时候共有桃子 %d 个\n",num);
return 0;}
C语言入门
926021 学习 · 20793 问题
相似问题