1、猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第1天共有多少桃子?(要求:使用循环计算桃子的个数,要求有函数设计,传入天数,返回桃子的个数)
#include <stdio.h> // 函数声明 int calculatePeaches(int days); // 主函数 int main() { int total_peaches; // 计算第一天开始的总桃子数 total_peaches = calculatePeaches(10); // 输出结果 printf("第一天开始共有 %d 个桃子。\n", total_peaches); return 0; } // 计算第一天开始的总桃子数 int calculatePeaches(int days) { int peaches = 1; // 第10天早上剩下的1个桃子 // 从第10天向前推算 for (int i = days - 1; i >= 1; i--) { // 每天早上吃掉一半,剩下的桃子数量加1 peaches = (peaches + 1) * 2; } return peaches; }
2、猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第1天共有多少桃子?(要求:使用递归函数计算桃子的个数,要求有函数设计,传入天数,返回桃子的个数)(注意与循环的区别)
#include <stdio.h> // 函数声明 int calculatePeaches(int days); // 主函数 int main() { int total_peaches; // 计算第一天开始的总桃子数 total_peaches = calculatePeaches(10); // 输出结果 printf("第一天开始共有 %d 个桃子。\n", total_peaches); return 0; } // 递归函数,计算第一天开始的总桃子数 int calculatePeaches(int days) { if (days == 1) { return 1; // 第1天剩余的桃子数为1 } else { // 递归调用,计算前一天剩余的桃子数 int peaches = calculatePeaches(days - 1); // 根据前一天剩余的桃子数计算当天开始的总桃子数 return (peaches + 1) * 2; } }