解题思路:
通过函数递归来解决问题
递归
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,递归函数必须有结束条件。
如果没有结束条件的话,它将是一个死循环!
(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 人评分
//#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; } 求解,哪里错了?
王文静 2023-05-28 17:15:44 |
x和n应该用double,这道题评判结果的话不需要输出“x=”和“n=”
#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
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:525 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:1078 |
【排队买票】 (C语言代码)浏览:899 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:879 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:606 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:504 |
妹子杀手的故事 (C语言代码)浏览:1045 |
理财计划 (C语言代码)浏览:465 |
【计算直线的交点数】 (C语言代码)浏览:916 |
1162答案错误,为什么浏览:638 |