解题思路:


    通过函数递归来解决问题


    

   递归

    递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,递归函数必须有结束条件。

    如果没有结束条件的话,它将是一个死循环!


    `LNN3D5{9RS~2GM5JEDA$I6.png

    (n -1)!就可以写成f(n-1),其他的一次类推



参考代码:

#include <stdio.h>
#include <math.h>
double fact(int n)
{
	if (n == 1) return 1;
	return n * fact(n - 1);
}

double mypow(double x, int n)
{
	if (n == 1) return x;
	return pow(-1, n - 1) * pow(x, n) / fact(n) + mypow(x,n - 1);
}

int main()
{
	double x;
	int n;
	scanf("%lf%d", &x, &n);
	printf("%.4lf", mypow(x,n));
	return 0;
}


点赞(0)
 

0.0分

20 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

凌辰 1年前 回复TA
//#define _CRT_SECURE_NO_WARNINGS
//#pragma warning(disable:6031)
#include<iostream>
using namespace std;
#include<math.h>
#include<stdio.h>
int jca(int n)
{
	int sum=1;
	for(int j=1;j<=n;j++)
	{
		sum *= j;
	}
	return sum;

}
double mypow(double x, int n)
{
	double sum=0,fh=1;
	for (int i = 1; i <= n; i++)
	{
		sum += fh * pow(x, i) / jca(i);
		fh = -fh;
	}
	// x - x2/2! + x3/3! + ... + (-1)n-1xn/n!
	return sum;
}
int main()
{
	int n;
	double x;
	cin >> x >> n;
	double a = mypow(x,n);
	printf("%lf", a);
	return 0;
}
哪错了?
王文静 1年前 回复TA
@暴走哈士奇 x和n应该用double,这道题评判结果的话不需要输出“x=”和“n=”
暴走哈士奇 2年前 回复TA
#include<stdio.h>
double fact(int a);
double mypow(int x,int n);
int main()
{
 int x,n,i,k=1;
 double sum=0;
 printf("x=");
 scanf("%d",&x);
 printf("n=");
 scanf("%d",&n);
 for(i=1;i<=n;i++)
 {
  sum+=k*(mypow(x,i)/fact(i));
  k=-k;
 }
 printf("%.4lf",sum);	
}
double mypow(int x,int n)
{
	double s=1;
	for(;n>=1;n--)
	s*=x;
	return s;
}
double fact(int a)
{
	double m,l=1;
	for(m=1;m<=a;m++)
	l*=m;
	return l;
}
求解,哪里错了?
唐伟龙 3年前 回复TA
#include<stdio.h>
#include<math.h>
void fact(double n,double x){
	double sum=1;
	double total=0.0;
	for(int i=1;i<n;i++){
		sum*=i;
		total+=pow(x,i)*(pow(-1,i-1))/sum;
	}
	printf("%.4lf",total);
}

int main(){
	double x,n;
	scanf("%lf%lf",&x,&n);
	fact(n,x);

	return 0;
	
}
这个哪里错了,答案总是0
凯特烦恼 3年前 回复TA
mypow(x,n)计算x的n次幂(即xn)
你这个mypow() 函数实现的功能是不是不对。
编程界的小白 3年前 回复TA
大炮打蚊子,有点小题大做