【題目描述】
已知

計算x=4.2,n=1以及x=2.5,n=15時f的值,
【輸入】
輸入x和n,
【輸出】
函式值,保留兩位小數,
【輸入樣例】
4.2 10
【輸出樣例】
3.68
1.看見這種一個套著一個還帶著詭異符號的,
基本上都是函式+回圈(遞回嘛)的套路,
話說這題一開始我沒看明白,
從n怎么變到x+1的???
再看看,
好像是由n變到1,然后最后那個根號里面有個x;
讓我們遞回一下,寫寫代碼,
2.這就是正解了
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
double gen(double x,double n);//宣告一個double型的函式,最后保留兩位輸出,
int main()
{
double n,x;
double result;
cin>>x>>n;
result=gen(x,n);
printf("%.2lf\n",result);
return 0;
}
double gen(double x,double n)//定義一下這個“根”函式
{
if(n==1)
return sqrt(1+x);
else
return sqrt(n+gen(x,n-1));//這時候就是遞回最靈魂的操作,呼叫自己
}
3.該遞回的就要遞回,
遞回的題和一般的函式+回圈有區別(其實也不大),
基本上有以下特征:
(1):一個函式套自己,比如f(f(x)),
正常的回圈題只有不同引數函式值之間的加法或乘法,
(2):大部分的題,不用遞回你做不出來...(或是不好做...)
所以嘛,做題之前一定先想想要用什么演算法或者結構什么的,
不然代碼打到一半不會打了太尷尬...
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/69120.html
標籤:C++
