回 帖 发 新 帖 刷新版面

主题:递推递归

高手们好!小弟在做计算Hermite多项式Hn(x)之值是遇见了困难!Hn(x)定义如下:
H0(x)=1      //0是H的下标。
H1(x)=2*x
Hn(x)=2*x*Hn(n-1)-2*(n-1)*Hn(n-2), x>1
我编写的程序是:
递推的是:
#include<stdio.h>

long Hn(int n)
{
    extern x;
   if (n<0)
   {
      printf("请输入正确合法的数字(正整数)");
      exit (-1);
   }
   else if (n=0)
           return 1;
      else if (n=1) 
          return (2*x);
      else
      return (2*x*Hn(n-1)-2*(n-1)*Hn(n-2));
      return (2*x*Hn(n-1)-2*(n-1)*Hn(n-2));
}

int x , t , i;
main()
{
    printf("请输入自变量;多项式的项数\n");
    scanf("%d%d",&x,&t);
    Hn(t);
    printf("%l",Hn(t));
}
递归的是:
#include<stdio.h>

int Hn(int i)
{
    int n;
    extern x;
   if (n<0)
   {
      printf("请输入正确合法的数字(正整数)");
      exit (-1);
   }
   if (n==0)
         return 1;
   if (n==1) 
          return 2*x;
   for (n=2;n<=i;n++)
   {
       Hn=2*x*Hn(n-1)-2*(n-1)*Hn(i-2);
       Hn(n-2)=Hn(n-1);
       Hn(n-1)=Hn;
   }
   return Hn
}
main()
{
    int x,i,t,Hn;
    printf("请输入自变量;多项式的项数\n");
    scanf("%d%d",&x,&t);
    Hn(t);
        printf("%l",Hn(t));
   
}
但是没有结果!我不知道哪里出问题了!请高手们指点指点 !!感激不尽!!

回复列表 (共3个回复)

沙发


[code=c]
// shishi.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "cstdlib"
#include "iostream"
#include<stdio.h>

long Hn(int n)
{
    extern int x;//声明
    if (n<0||n!=int(n))
    {
        printf("请输入正确合法的数字(正整数)");
        exit (-1);
    }
    if (n==0)// 这个地方是==不是=号
        return 1;
    else if (n==1) 
        return (2*x);
    else 
        return (2*x*Hn(n-1)-2*(n-1)*Hn(n-2));
    
}

int x , t ;
int main()
{
    printf("请输入自变量;多项式的项数\n");
    scanf("%d%d",&x,&t);
    printf("/////////////////////////\n");
    printf("%l",Hn(t));//不知道这句为什么不输出,所以加了下面一句
    std::cout<<Hn(t);
    printf("\n/////////////////////////\n");
    return 0;
}
[/code]

板凳

long Hn(int n)
这个最好用
int Hn(int n) 这就是printf("%l",Hn(t));不显示结果的原因
改成
printf("%d",Hn(t));就OK了

3 楼

题外话:lz把递推和递归写反了
另外:我不明白你为什么要extern x,如果想用全局x的话,直接把x声明在最前面就可以了

我来回复

您尚未登录,请登录后再回复。点此登录或注册