首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

数值型递归有关问题的求解方法

2012-09-04 
数值型递归问题的求解方法  例9-29:请用递归的方法计算下列函数的值:px(x,n) x - x2 + x3 - x4 + ......

数值型递归问题的求解方法


  例9-29:请用递归的方法计算下列函数的值:
px(x,n) = x - x2 + x3 - x4 + ...... (-1)n-1xn (n>0)
  这是一个数值型问题。函数的定义不是递归定义形式。对原来的定义进行数学变换:
  px(x,n) = x - x2 + x3 - x4 + ...... (-1)n-1xn
= x * ( 1 - x + x2 - x3 + x4 - ...... (-1)n-1xn-1 )
= x * ( 1 - ( x - x2 + x3 - ...... (-1)n-2xn-1 ) )
= x * ( 1 - px(x,n-1))
  经变换后,可以将原来的非递归定义形式转化为等价的递归定义:
x 当 n=1 时
x * ( 1 - px(x,n-1) ) 当 n>1 时
  由此递归定义,可以确定递归算法和递归结束条件。递归程序如下:
#include <stdio.h>
double px ( double x, int n )
{ if (n==1) return ( x ); /* 当n=1时,结束递归 */
else return ( x * ( 1 - px(x,n-1) ) ; /* 否则按函数的定义继续计算 */
}
main( )
{ double x; int n;
printf("Enter X and N:");
scanf ("%lf%d", &x, &n);
printf("px=%lf\n", px(x, n) ); /* 调用函数px */
}

<!--EndFragment-->

热点排行