分治策略解决密乘问题

分治策略解决密乘问题

问题描述:例如两个正数,a,b;求a的b次幂

思路:
分治策略解决密乘问题_第1张图片
注意的是,这里的n指的是b,思路很简单,下面看代码

程序代码:

	#include   
	float  fun( float x, float y )
	 {
 
    	if ( y == 1 )    //递归出口 
        return x;      
        
    	else if ( (int)y % 2 == 0 )  //如果y是偶数的情况 
    	
        return fun(x,y/2)*fun(x,y/2);
 
        return fun(x,(y-1)/2)*fun(x,(y-1)/2)*x;  //如果y是奇数的情况 
	}	
	
	int  main()
	{
		int a,b;
		printf("请输入两个数:");
		scanf("%d%d",&a,&b);
		printf("%d的%d次幂的值为:%0.1f",a,b,fun( a, b));
		return 0;
	}

程序运行结果如下:
分治策略解决密乘问题_第2张图片

你可能感兴趣的:(算法设计与分析)