解题思路:
通过函数递归来解决问题
递归
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,递归函数必须有结束条件。
如果没有结束条件的话,它将是一个死循环!
(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分
24 人评分
//#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语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:524 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:612 |
C语言程序设计教程(第三版)课后习题10.1 (Java代码)浏览:1493 |
P1001 (C语言代码)浏览:836 |
C语言训练-大、小写问题 (C语言代码)浏览:649 |
校门外的树 (C语言代码)浏览:733 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
交换Easy (C语言代码)浏览:805 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:501 |
小O的数字 (C++代码)浏览:806 |