原题链接:二级C语言-自定义函数
解题思路:
通过函数递归来解决问题
递归
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,递归函数必须有结束条件。
如果没有结束条件的话,它将是一个死循环!

(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分
20 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
//#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; } 哪错了?#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; } 求解,哪里错了?#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