桃子第幾天的數量是怎么打印的數量是怎么回事
n=1的結果不應該是(getpeachnumber (2)+1)*2+(getpeachnumber(3)+1)*2)+……+(getpeachnumber(9)+1)*2+(getpeachnumber(10)+1)*2嗎?
最后一項也等于4
請問getpeachnumber(1~9)的值是怎么算的?
還有 函數為什么自動從第九天開始打印了?為什么不是第100天?第1000天?
n=1的結果不應該是(getpeachnumber (2)+1)*2+(getpeachnumber(3)+1)*2)+……+(getpeachnumber(9)+1)*2+(getpeachnumber(10)+1)*2嗎?
最后一項也等于4
請問getpeachnumber(1~9)的值是怎么算的?
還有 函數為什么自動從第九天開始打印了?為什么不是第100天?第1000天?
2021-10-24
舉報
2022-08-30
我琢磨了兩天,最后受不了了問了問嵌入式同事,他是這樣給我解釋的,那個getPeachNumber函數在第一次進圈開始套的時候,在getPeachNumber這個函數內程序跑到num=getPeachNumber這又跑一圈,一直跑到if那返回個num=1,才會繼續乘2+2
2021-10-31
getPeachNumber(n)給出的結果sum是第n天在吃之前的桃子數量,也就是第(n-1)天吃完之后剩下的桃子數量。
getPeachNumber(n)自定義函數在main()函數中的第一個參數值是? 1? ?,自定義函數getPeachNumber(n)中的終止條件是? n==10。故不可能出現第100天,第1000天的情況。
getPeachNumber(n)自定義函數的if語句中,有一段
?printf("第%d天所剩桃子%d個\n", n,num);
這是在自定義函數返回num結果之前就已經打印出來了的。
整個程序中,(n=1到10) 和( 當n=10時,num=1)這兩項數據是已知的,然后就是第n天和第n+1天,num的變化規律是知道的。? 要想知道第1天有多少桃子,只能從第10天有1個桃子,推算出第9天,有(1+1)*2=4個桃子,然后是第8天,有(4+1)*2=10個桃子……? ?同樣的,在遞歸函數中,最先計算出答案的也是第9天的桃子數量,同時可以將第9天的桃子數量打印出來,然后是第8天,第7天……
2021-10-31
#include<stdio.h>
#include <windows.h>
void color(int x) //設置字體顏色
{
if (x >= 0 && x <= 15)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
else
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
int getPeachNumber(int n)
{
int num=1; //定義所剩桃子數
if (n == 10)
{
return num; //遞歸結束條件
}
else
{
num = ((getPeachNumber(n+1))+1)*2;
printf("第%d天所剩桃子%d個\n", n, num); //天數,所剩桃子個數
}
return num;
}
int main()
{
color(2);
int num = getPeachNumber(1);
printf("猴子第一天摘了:%d個桃子。\n", num);
return 0;
}